gpt4 book ai didi

javascript - 如何比较两个数组与对象?

转载 作者:行者123 更新时间:2023-11-28 11:43:31 27 4
gpt4 key购买 nike

我将 id 与两个带有对象的数组进行比较。

这是我的功能:

array1 = [
{ id: 1 },
{ id: 2 },
{ id: 3 }
];

array2 = [
{ id: 1 },
{ id: 2 },
{ id: 3 }
];

const compareFunction = (array1, array2) => {
array2.map((allValue) => {
array1.map((value) => {
allValue.selected = value.id === allValue.id;
});
})

return array2;
}

我想我会得到array2

[{ id: 1, selected: true }, { id: 2, selected: true },{ id: 3, selected: true }]

但实际上array2变成了

[{ id: 1, selected: false }, { id: 2, selected: false },{ id: 3, selected: true }]

只有最后选择的数组参数才变为 true。

哪一步错了?谢谢。

最佳答案

将第二个数组转换为一组 id 值。使用Array.map()迭代第一个数组,并通过扩展当前对象并添加selected值来为每个项目创建一个新对象。要获取selected值,请检查Set是否包含当前项目id

const array1 = [{ id: 1 },{ id: 2 },{ id: 3 }];
const array2 = [{ id: 1 },{ id: 2 },{ id: 3 }];

const a2Set = new Set(array2.map(o => o.id))

const result = array1.map(o => ({ ...o, selected: a2Set.has(o.id) }))

console.log(result)

关于javascript - 如何比较两个数组与对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59333923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com