我有一个对象数组
let objList = [
{
id:10,
...
},
{
id: 12,
...
},
{
id: 13,
...
},
...
];
我想过滤掉ID在另一个数组中的所有对象
let keyList = [10, 13];
Expected output:
[
{
id: 10,
...
},
{
id: 13,
...
}
]
注意:
要求在Angular 7应用程序中,我也使用Lodash库。
我尝试过:
objList.filter(eachObj => keysList.forEach(
eachID => {
eachID == eachObj['id']
}
))
和
find(ObjList, eachObj => {
return eachObj['id'] === keysList.map(eachID => {
return eachID;
})
})
答案 0 :(得分:1)
您可以使用过滤器:
objList = objList.filter(element => keyList.indexOf(element.id) > -1);
答案 1 :(得分:1)
由于没有从数组中获得_tacToe[0, 0]
_tacToe[1, 1]
_tacToe[2, 2]
字段,因此未获得期望的结果。
因此,尝试使用id
方法并获取includes
属性:
id
答案 2 :(得分:1)
使用_.differenceWith()
将id
与key
进行比较,并删除两个数组中都存在的项目:
const objList = [{ id: 10 }, { id: 12 }, { id: 13 }];
const keyList = [10, 13];
const result = _.differenceWith(objList, keyList, ({ id }, key) => id === key);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.13/lodash.js"></script>