gpt4 book ai didi

javascript - 如何使用 Javascript 中的 Id 键用另一个数组的数据更新一个数组?

转载 作者:行者123 更新时间:2023-11-28 14:20:05 25 4
gpt4 key购买 nike

我在 Javascript 中有两个数组,我需要使用 id 键用第二个数组的内容更新第一个数组。

我需要从数组中找到 id 并更新相同的对象。

由于 b 是单个对象的数组,因此我可以使用 b[0].id

const a = [{id: 1, name: 'test', data: 'yes'}, {id: 2, name: 'test 1'}]

const b = [{id: 1, name: 'sample', data: 'no'}, {id: 3, name: 'sample', data: 'no'}]

const output = [{id: 1, name: 'sample', data: 'no'}, {id: 2, name: 'test 1'}, {id: 3, name: 'sample', data: 'no'}]

任何帮助将不胜感激

最佳答案

您可以选择 Map并使用 ab 属性映射新对象。

const
a = [{ id: 1, name: 'test', data: 'yes' }, { id: 2, name: 'test 1' }],
b = [{ id: 1, name: 'sample', data: 'no' }],
map = new Map(b.map(o => [o.id, o])),
result = a.map(o => Object.assign({}, o, map.get(o.id)));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

要获取包含所有项目的新数组,您可以对结果数组和 Map 进行闭包。

const
merge = (target, map = new Map) => source => {
var object = {};
if (!map.has(source.id)) {
map.set(source.id, object);
target.push(object);
}
Object.assign(map.get(source.id), source);
},
a = [{ id: 1, name: 'test', data: 'yes' }, { id: 2, name: 'test 1' }],
b = [{ id: 1, name: 'sample', data: 'no' }, { id: 3, name: 'sample', data: 'no' }],
result = [],
update = merge(result);

[a, b].forEach(a => a.forEach(update));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何使用 Javascript 中的 Id 键用另一个数组的数据更新一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55567914/

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