gpt4 book ai didi

javascript - 在javascript(lodash)中合并部分重复的数组

转载 作者:行者123 更新时间:2023-11-30 19:36:11 27 4
gpt4 key购买 nike

我有一个很大的 javascript 数组,一些人在不同的年份买了一辆汽车。简化的数组是这样的:

const owners = [{
name: "john",
hasCar: true,
yearBought: 2002
}, {
name: "john",
hasCar: true,
yearBought: 2005
}, {
name: "mary",
hasCar: true,
yearBought: 2015
}, {
name: "john",
hasCar: true,
yearBought: 2018
}]

如果一个人拥有不止一辆汽车(如本例中的约翰),则他购买汽车的年份不同,对象也不同。我想合并属于每个人的对象,最终结果应该是这样的:

const owners = [{
name: "john",
hasCar: true,
yearBought: [2002, 2005, 2018]
}, {
name: "mary",
hasCar: true,
yearBought: 2018
}]

最佳答案

你可以使用 reduce数组并首先根据 name 对它们进行分组。累加器是一个对象,每个唯一的 name 作为键。如果 name 已经存在,使用 concat将它们插入数组。否则,在累加器中创建一个新键并将其设置为当前对象。然后,使用 Object.values()以数组形式获取数组的值

const owners = [{name:"john",hasCar:!0,yearBought:2002},{name:"john",hasCar:!0,yearBought:2005},{name:"mary",hasCar:!0,yearBought:2015},{name:"john",hasCar:!0,yearBought:2018}];

const merged = owners.reduce((r, o) => {
if(r[o.name])
r[o.name].yearBought = [].concat(r[o.name].yearBought, o.yearBought)
else
r[o.name] = { ...o };
return r;
},{})

console.log(Object.values(merged))

关于javascript - 在javascript(lodash)中合并部分重复的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55932473/

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