Javascript 如何在另一个数组筛选器中进行筛选?

Javascript 如何在另一个数组筛选器中进行筛选?,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 [{

我有下面的json数据

我想忽略状态为“待定”的记录?我尝试使用下面的代码,但它返回了所有记录empid101和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()函数未返回预期结果。应该使用什么函数?因此,您希望删除挂起但保留任何其他内容?您仍然可以使用
每个
,只需更改为
状态!=“挂起”