首页  >  文章  >  web前端  >  如何根据另一个数组中的匹配属性来过滤对象数组?

如何根据另一个数组中的匹配属性来过滤对象数组?

Linda Hamilton
Linda Hamilton原创
2024-11-02 08:50:02223浏览

How to Filter an Array of Objects Based on Matching Properties in Another Array?

使用另一个对象数组过滤对象数组

当前的任务是根据第二个对象数组 (myFilter) 仅返回 myArray 中其 userid 和 projectid 属性与 myFilter 中的那些对象匹配的对象。

解决方案

为了实现这一点,我们利用过滤器和一些方法的组合。 filter 方法迭代 myArray 中的每个元素并返回一个新数组,该数组仅包含那些通过给定条件的元素。在这种情况下,如果元素的 userid 和 projectid 与 myFilter 中的任何 userid 和 projectid 对匹配,则满足条件。

过滤条件中使用 some 方法来确定 myFilter 中的任何元素是否满足指定的标准。该条件检查当前 myFilter 元素的 userid 和 projectid 属性是否等于当前 myArray 元素的 userid 和 projectid 属性。如果找到匹配项,则 some 方法返回 true,表示满足条件,并且该元素应包含在过滤后的数组中。

代码示例

<code class="js">const myArray = [
  { userid: "100", projectid: "10", rowid: "0" },
  { userid: "101", projectid: "11", rowid: "1"},
  { userid: "102", projectid: "12", rowid: "2" },
  { userid: "103", projectid: "13", rowid: "3" },
  { userid: "101", projectid: "10", rowid: "4" }
];
const myFilter = [
  { userid: "101", projectid: "11" },
  { userid: "102", projectid: "12" },
  { userid: "103",  projectid: "11"}
];

const myArrayFiltered = myArray.filter((el) => {
  return myFilter.some((f) => {
    return f.userid === el.userid && f.projectid === el.projectid;
  });
});

console.log(myArrayFiltered);</code>

输出

[
  { userid: "101", projectid: "11", rowid: "1" },
  { userid: "102", projectid: "12", rowid: "2" }
]

以上是如何根据另一个数组中的匹配属性来过滤对象数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn