【问题标题】:filtering data with array of objects data es6使用对象数据数组 es6 过滤数据
【发布时间】:2021-06-08 11:42:41
【问题描述】:

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

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

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

【问题讨论】:

  • 请发布您数据的有效代码表示。您从开发工具控制台复制的内容不是运行代码的可用结构。 p.checkItemscheckedItems 似乎都未定义。见minimal reproducible example
  • @charlietfl 我已经更新了我的问题,你现在可以检查一下吗

标签: javascript ecmascript-6 filter


【解决方案1】:

试试这个

 var filtered = actualData.filter(function (item) {
        return selectedItems.indexOf(item.id) === -1;
    });
    console.log('filtered', filtered);

【讨论】:

    【解决方案2】:

    如果我理解正确,您需要在 selectedItems 中找到不在 actualData 中的项目,对吗?所以如果你有

    var selectedItems = [33,22,9];
    

    你的例子中提供的实际数据,你的结果是

    Array [ 9 ]
    

    对吗?在这种情况下,您应该这样做:

    const filtered = selectedItems.filter(item => !actualData.find(data => data.id === item));
    console.log(filtered);
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 感谢@Ashok Kumar,但接受的答案已经对我有用。
      猜你喜欢
      • 2018-11-12
      • 1970-01-01
      • 2018-02-07
      • 2022-11-26
      • 2019-02-13
      • 2018-07-31
      • 1970-01-01
      • 2021-03-21
      • 2022-08-15
      相关资源
      最近更新 更多