基于键如何在JavaScript中从数组中过滤?

基于键如何在JavaScript中从数组中过滤?,javascript,arrays,Javascript,Arrays,我收到了所有工作指令的回复 { "jobOrders": [{ "id": "5b4f7ad860dfee3b009d7452", "haulier": { "companyName": "BigDataMatica", "email": "nirmalkumar.s@datinfi.com", "registrationNumber": "nirmal89HJ", "companyAddress": "

我收到了所有工作指令的回复

{
  "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
object
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"]
[undefined, undefined, undefined]

输出:

["nirmalkumar.s@datinfi.com", "nirmalkumar.s@datinfi.com", "sivasai.s@datinfi.com"]
[undefined, undefined, undefined]
两个问题:

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

    应成为:

    joborderlist.filter((el)=>el.haulier.email == haulierjobordersnames)
                .map((el) => el.haulier.email)
    
    显然,通过这种方式,输出将重复相同的值,因此,除了刚才过滤的电子邮件之外,您可能还想提取一些其他信息。

    两个问题:

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

    应成为:

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

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

    您需要的是一个
    过滤器,而不是
    映射。您还需要从filter函数返回值

    const作业订单列表=[
    {
    “id”:“5b4f7ad860dfee3b009d7452”,
    “运输商”:{
    “公司名称”:“BigDataMatica”,
    “电子邮件”:“nirmalkumar。s@datinfi.com",
    “注册号”:“nirmal89HJ”,
    “公司地址”:“RSPURAM”,
    “公司电话”:“8687678”,
    “Yardadress”:“Pragatinagar”,
    “yardPhone”:“69876876”,
    “搬运商代码”:“搬运商”,
    “billingAddress”:“Pragatinagar”
    }
    },
    {
    “id”:“5b501f8f60dfee3b009d7454”,
    “运输商”:{
    “公司名称”:“BigDataMatica”,
    “电子邮件”:“nirmalkumar。s@datinfi.com",
    “注册号”:“nirmal89HJ”,
    “公司地址”:“RS PURAM”,
    “公司电话”:“8687678”,
    “Yardadress”:“Pragatinagar”,
    “yardPhone”:“69876876”,
    “搬运商代码”:“搬运商”,
    “billingAddress”:“Pragatinagar”
    }
    },
    {
    “id”:“5b5020f360dfee3b009d7455”,
    “运输商”:{
    “公司名称”:“BigDataMatica”,
    “电子邮件”:“sivasai。s@datinfi.com",
    “注册号”:“nirmal89HJ”,
    “公司地址”:“RS PURAM”,
    “公司电话”:“8687678”,
    “Yardadress”:“Pragatinagar”,
    “yardPhone”:“69876876”,
    “搬运商代码”:“搬运商”,
    “billingAddress”:“Pragatinagar”
    }
    }
    ]
    const haulierjobordersnames='sivasai。s@datinfi.com';
    让HailerJobOrders=joborderlist&&joborderlist.filter&&joborderlist.filter((el)=>{return el.Hailer.email==HailerJobOrdersNames})
    
    console.log(“hailerJobOrders”,hailerJobOrders)您需要的是一个
    过滤器
    ,而不是
    映射
    。您还需要从filter函数返回值

    const作业订单列表=[
    {
    “id”:“5b4f7ad860dfee3b009d7452”,
    “运输商”:{
    “公司名称”:“BigDataMatica”,
    “电子邮件”:“nirmalkumar。s@datinfi.com",
    “注册号”:“nirmal89HJ”,
    “公司地址”:“RSPURAM”,
    “公司电话”:“8687678”,
    “Yardadress”:“Pragatinagar”,
    “yardPhone”:“69876876”,
    “搬运商代码”:“搬运商”,
    “billingAddress”:“Pragatinagar”
    }
    },
    {
    “id”:“5b501f8f60dfee3b009d7454”,
    “运输商”:{
    “公司名称”:“BigDataMatica”,
    “电子邮件”:“nirmalkumar。s@datinfi.com",
    “注册号”:“nirmal89HJ”,
    “公司地址”:“RS PURAM”,
    “公司电话”:“8687678”,
    “Yardadress”:“Pragatinagar”,
    “yardPhone”:“69876876”,
    “搬运商代码”:“搬运商”,
    “billingAddress”:“Pragatinagar”
    }
    },
    {
    “id”:“5b5020f360dfee3b009d7455”,
    “运输商”:{
    “公司名称”:“BigDataMatica”,
    “电子邮件”:“sivasai。s@datinfi.com",
    “注册号”:“nirmal89HJ”,
    “公司地址”:“RS PURAM”,
    “公司电话”:“8687678”,
    “Yardadress”:“Pragatinagar”,
    “yardPhone”:“69876876”,
    “搬运商代码”:“搬运商”,
    “billingAddress”:“Pragatinagar”
    }
    }
    ]
    const haulierjobordersnames='sivasai。s@datinfi.com';
    让HailerJobOrders=joborderlist&&joborderlist.filter&&joborderlist.filter((el)=>{return el.Hailer.email==HailerJobOrdersNames})
    
    console.log(“hailerJobOrders”,hailerJobOrders)当使用箭头函数和内部使用表达式时,您必须提及返回明确性BTW您的问题标题有点不正确。当使用箭头函数和内部使用表达式时,您必须提及返回明确性BTW您的问题标题有点不正确。