我有一个问题,过滤具有对象数组的对象的最佳方法是什么,我想返回一个具有匹配属性的对象
const test = Object.keys(repo).map((keyName, i) => {
if(repo[keyName].name === post_name) {
console.log(repo[keyName])
}
})
上面的代码有效,但我觉得这不是实现它的最佳方式,也许有人有更好的方法来解决这个问题。
如果要过滤现有数组并创建新数组,则应使用 .filter
.仅当您从现有数组中的每个元素创建另一个数组时才使用 .map
- 不要将其用于副作用。
您可以使用 Object.values
而不是 Object.keys
,因为看起来您只关心值:
const test = Object.values(repo).filter(({ name }) => name === post_name);
然后,您将拥有一个具有匹配name
的对象数组。
如果您知道只有一个匹配的对象,请改用.find
:
const match = Object.values(repo).find(({ name }) => name === post_name);