我将 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;
}
Run Code Online (Sandbox Code Playgroud)
我想我会得到array2喜欢的
[{ id: 1, selected: true }, { id: 2, selected: true },{ id: 3, selected: true }]
Run Code Online (Sandbox Code Playgroud)
但实际上array2成为
[{ id: 1, selected: false }, { id: 2, selected: false },{ id: 3, selected: true }]
Run Code Online (Sandbox Code Playgroud)
只有最后一个选择的数组参数变为真。
哪一步错了?谢谢。
将第二个数组转换为一组id值。用 a 迭代第一个数组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)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |