gpt4 book ai didi

Javascript:合并同一数组中的 2 个或多个对象

转载 作者:行者123 更新时间:2023-12-01 02:34:06 24 4
gpt4 key购买 nike

知道如何重构这样的数据结构

var data = [
[{
jan: 10,
feb: 20,
mar: 30,
type: "one"
},
{
jan: 20,
feb: 10,
mar: 40,
type: "one"
}],
[
{
jan: 10,
feb: 20,
mar: 30,
type: "two"
},
{
jan: 20,
feb: 10,
mar: 40,
type: "two"
}]
]

console.log(data)

变成这样的事情?

var data = [
{
jan: 30,
feb: 30,
mar: 70,
type: "one"
},
{
jan: 30,
feb: 30,
mar: 70,
type: "two"
}
]

console.log(data)

如示例所示,同一数组中的对象被合并,并添加了 janfebmar 键。

我已经无计可施了。预先感谢:)

最佳答案

您可以在 JavaScript 数组上使用 mapreduce 函数来获得结果。

使用 map 迭代主数组内的子数组,并在这些子数组内使用 reduce 来汇总月份数据。

var data = [
[{
jan: 10,
feb: 20,
mar: 30,
type: "one"
},
{
jan: 20,
feb: 10,
mar: 40,
type: "one"
}],
[
{
jan: 10,
feb: 20,
mar: 30,
type: "two"
},
{
jan: 20,
feb: 10,
mar: 40,
type: "two"
}]
]

var newData = data.map(function(arr){
return arr.reduce(function(acc, ele, i){
if(i === 0){
acc = ele;
}
else{
var keys= Object.keys(ele);
keys.splice(keys.indexOf("type"), 1);
keys.forEach(function(key){
acc[key] += ele[key];
})
}
return acc;
},{});
});
console.log(newData)

关于Javascript:合并同一数组中的 2 个或多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48074171/

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