Javascript 如何在另一个数组筛选器中进行筛选?
我有下面的json数据 我想忽略状态为“待定”的记录?我尝试使用下面的代码,但它返回了所有记录empid101和102Javascript 如何在另一个数组筛选器中进行筛选?,javascript,reactjs,angular,typescript,Javascript,Reactjs,Angular,Typescript,我有下面的json数据 我想忽略状态为“待定”的记录?我尝试使用下面的代码,但它返回了所有记录empid101和102 var res = emp.filter( e => e.statuses.filter( s => s.status !== "complete" ) ); console.log(res); 预期输出:empId 102 [{
var res = emp.filter(
e =>
e.statuses.filter(
s =>
s.status !== "complete"
)
);
console.log(res);
预期输出:empId 102
[{
"empId": "101",
"statuses": [{
"status": "pending",
"order": 1
},
{
"status": "complete",
"order": 2
}
]
},
{
"empId": "102",
"statuses": [{
"status": "inprogress",
"order": 1
},
{
"status": "complete",
"order": 2
}
]
}
]
使用every功能确保所有状态都已完成
const emps = [{
"empId": "101",
"statuses": [{
"status": "pending",
"order": 1
},
{
"status": "complete",
"order": 2
}
]
},
{
"empId": "102",
"statuses": [{
"status": "complete",
"order": 1
},
{
"status": "complete",
"order": 2
}
]
}
]
var res = emps.filter(emp => emp.statuses.every(status => status.status !== "pending"))
console.log(res);
结果:
[{
empId: "102",
statuses: [{
order: 1,
status: "complete"
}, {
order: 2,
status: "complete"
}]
}]
您的数据结构无效,并且目前与代码不匹配
emp
是一个对象,但有重复的键,但您正在对其进行迭代,就像它是一个带有.filter
的数组一样?你能修复它吗?emp.filter(e=>e.statuses.filter(s=>s.status=='completed')。长度===e.statuses.length)代码>您的json数据不正确。它应该是这样的var emp=[{“empId”:“101”,“status”:[{“status”:“pending”,“order”:1},{“status”:“complete”,“order”:2}]},{“empId”:“102”,“status”:[{“status”:“complete”,“order”:1},{“status”:“complete”,“order”:2}]}]
从resultOkay中更正了有效的jsonignore EmpId 101,我更新了codechanged JSON数据,如果status具有as inprogress,则every()函数未返回预期结果。应该使用什么函数?因此,您希望删除挂起但保留任何其他内容?您仍然可以使用每个
,只需更改为状态!=“挂起”