javascript - JavaScript中如何基于key从数组中过滤?

标签 javascript arrays

我正在收到所有工作订单的回复。

{
  "jobOrders": [{
      "id": "5b4f7ad860dfee3b009d7452",
      "haulier": {
        "companyName": "BigDataMatica",
        "email": "nirmalkumar.s@datinfi.com",
        "registrationNumber": "nirmal89HJ",
        "companyAddress": "RSPURAM",
        "companyPhone": "8687678",
        "yardAddress": "Pragatinagar",
        "yardPhone": "69876876",
        "haulierCode": "Haulier",
        "billingAddress": "Pragatinagar"
      }
    },
    {
      "id": "5b501f8f60dfee3b009d7454",
      "haulier": {
        "companyName": "BigDataMatica",
        "email": "nirmalkumar.s@datinfi.com",
        "registrationNumber": "nirmal89HJ",
        "companyAddress": "RS PURAM",
        "companyPhone": "8687678",
        "yardAddress": "Pragatinagar",
        "yardPhone": "69876876",
        "haulierCode": "Haulier",
        "billingAddress": "Pragatinagar"
      }
    },
    {
      "id": "5b5020f360dfee3b009d7455",
      "haulier": {
        "companyName": "BigDataMatica",
        "email": "sivasai.s@datinfi.com",
        "registrationNumber": "nirmal89HJ",
        "companyAddress": "RS PURAM",
        "companyPhone": "8687678",
        "yardAddress": "Pragatinagar",
        "yardPhone": "69876876",
        "haulierCode": "Haulier",
        "billingAddress": "Pragatinagar"
      }
    }
  ]
}

根据作业订单,我需要根据haulier对象email键过滤作业订单。

let haulierjobordersnames = joborderlist && joborderlist.map && joborderlist.map(a => a.haulier.email);
console.log("haulierjobordersnames", haulierjobordersnames);

输出:

["nirmalkumar.s@datinfi.com", "nirmalkumar.s@datinfi.com", "sivasai.s@datinfi.com"]
<小时/>
let haulierjoborders = joborderlist && joborderlist.map && joborderlist.map((el)=>{el.haulier.email == haulierjobordersnames})
console.log("haulierjoborders", haulierjoborders);

输出:

[undefined, undefined, undefined]

最佳答案

两个问题:

  1. 如果需要过滤,需要调用.filter,而不是(仅).map
  2. 如果您在回调函数中使用大括号,它将被视为代码块,因此您需要返回一些内容。否则跳过大括号,以便使用表达式语法。

所以:

joborderlist.map((el)=>{el.haulier.email == haulierjobordersnames})

应该变成:

joborderlist.filter((el)=>el.haulier.email == haulierjobordersnames)
            .map((el) => el.haulier.email)

显然,通过这种方式,输出将重复相同的值,因此您可能想提取除刚刚过滤的电子邮件之外的其他信息。

关于javascript - JavaScript中如何基于key从数组中过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51416652/

相关文章:

javascript - HTML 输入仅接受数字和电子邮件

PHP,加载时提交表单

javascript - 如何使用 javascript + HTML5 了解 PDF 版本

javascript - 需要在下拉菜单中列出以在单击数字后显示结果

c - C 中棘手的数组增量

arrays - 添加数组中的长度或每个字符串并创建一个附加结果的新数组

javascript - 同一页面上的两个 jQuery 日期选择器具有不同的 CSS 样式

arrays - 为什么在创建嵌套结构的数组时不能使用短数组构造函数语法?

javascript - javascript 中数组中值的匹配

javascript - jQuery Form - 序列化为多维数组?