使用对象数据es6数组过滤数据

时间:2021-06-08 11:42:41

标签: javascript ecmascript-6 filter

我正在尝试用另一个对象数组过滤对象数组。

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)));

我已经搜索了很多达到我的要求,但我没有任何解决方案可以帮助我解决这个问题。

3 个答案:

答案 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);

相关问题