我正在收到所有工作订单的回复。
{
"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]
最佳答案
两个问题:
- 如果需要过滤,需要调用
.filter
,而不是(仅).map
- 如果您在回调函数中使用大括号,它将被视为代码块,因此您需要
返回
一些内容。否则跳过大括号,以便使用表达式语法。
所以:
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/