gpt4 book ai didi

javascript - 在不使用 lodash 的情况下合并两个有条件的数组

转载 作者:行者123 更新时间:2023-11-30 08:26:18 26 4
gpt4 key购买 nike

我在合并两个数组时遇到问题。我有两个对象数组,第一个是 prev 具有旧值,另一个具有更新值。我希望结果数组包含 prev 数组的所有对象及其在 next 数组中的更新值,并且在 next 数组中也有对象。

例子:

var prev = [{id: 1, val: 'abc'}, {id: 2, val: 'pqr'}];
var next = [{id: 1, val: 'nextVal'}, {id: 3, val: 'xyz'}];

预计

mergeOutput = [
{id: 1, val: 'nextVal'}, // value is updated
{id: 2, val: 'pqr'},
{id: 3, val: 'xyz'}
]

注意:数组顺序无关紧要。

最佳答案

您可以使用 Map() 来合并数组。

var prev = [{id: 1, val: 'abc'}, {id: 2, val: 'pqr'}];
var next = [{id: 1, val: 'nextVal'}, {id: 3, val: 'xyz'}];

var hash = new Map();
prev.concat(next).forEach(function(obj) {
hash.set(obj.id, Object.assign(hash.get(obj.id) || {}, obj))
});

var mergedArray = Array.from(hash.values());
console.log(mergedArray);

来源:StackOverflow

关于javascript - 在不使用 lodash 的情况下合并两个有条件的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45137744/

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