我正在尝试用另一个对象数组过滤对象数组。
var actualData = [{modifiedy: "USER", createdOn: "2021-03-18", id: 33 },{modifiedy: "USER", createdOn:"2021-03-18", id: 22},{modifiedy: "USER", createdOn: "2021-03-18", id: 36}, {modifiedy: "USER", createdOn: "2021-03-18", id: 11 }]
var selectedItems = [33,22]
我需要返回不包含在实际数据中的项目。
我尝试使用以下函数,但出现未定义的“某些”错误。
const filtered = result.filter((p) => !p.checkedItems.some((a) => checkedItems.includes(a.id)));
我已经搜索了很多达到我的要求,但我没有任何解决方案可以帮助我解决这个问题。
答案 0 :(得分:2)
试试这个
var filtered = actualData.filter(function (item) {
return selectedItems.indexOf(item.id) === -1;
});
console.log('filtered', filtered);
答案 1 :(得分:0)
如果我理解正确,您需要在 selectedItems 中查找不在 actualData 中的项目,对吗?所以如果你有
var selectedItems = [33,22,9];
和您的示例中提供的实际数据,您的结果是
Array [ 9 ]
对吧?在这种情况下,您应该执行以下操作:
const filtered = selectedItems.filter(item => !actualData.find(data => data.id === item));
console.log(filtered);
答案 2 :(得分:0)
使用 filter()
和 ES6
const actualData = [
{ modifiedy: "USER", createdOn: "2021-03-18", id: 33 },
{ modifiedy: "USER", createdOn: "2021-03-18", id: 22 },
{ modifiedy: "USER", createdOn: "2021-03-18", id: 36 },
{ modifiedy: "USER", createdOn: "2021-03-18", id: 11 },
];
const selectedItems = [33, 22];
const notIncludedData = actualData.filter((a, i) => selectedItems.indexOf(a.id) !== i);
console.log(notIncludedData);