【发布时间】:2020-09-30 05:02:48
【问题描述】:
我正在尝试通过比较 2 个现有对象来创建一个新的对象数组。我只想返回通过 if 语句的项目。
我希望这种情况发生: 如果 addedArray 中的项目名称与 mainArray 中的项目名称匹配,并且“添加”值相同,则将项目返回到新数组,或者如果项目名称不匹配,则将项目添加到新数组中。
如果这没有意义,请看我想要的结果。
这是我现在所拥有的,由于某种原因,新数组仍然包含 addedArray 的所有项。我不明白为什么。
const mainArray = [
{name: 'item1', added: false},
{name: 'item2', added: true},
{name: 'item3', added: false}
]
const addedArray = [
{name: 'item2', added: true},
{name: 'item3', added: true},
{name: 'item5', added: true}
]
let newAddedArray = addedArray.filter((addedItem) => {
return mainArray.map((mainItem) => {
if ((addedItem.name === mainItem.name && addedItem.added === mainItem.added) || addedItem.name !== mainItem.name) {
return {
...addedItem,
addedItem
}
}
})
})
// Result I want
// newAddedArray = [
// {name: 'item2', added: true},
// {name: 'item5', added: true}
// ]
console.log(newAddedArray)
【问题讨论】:
标签: javascript arrays