gpt4 book ai didi

javascript - 如何通过对象数组中的键值合并或连接数据?

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

我正在尝试对数组进行排序并将具有相同“日期”值的数据连接到一个数组中。

到目前为止,我尝试了 .map/.foreach 方法来循环日期变量并将所有其他属性分组为一个对象,但我对如何将数据与相同的数据键组合感到困惑。

我正在处理的数据:

let rawdata = [ { 'date': 'a', 'time': 'b', 'value1': 123, 'value2': 234 },
{ 'date': 'a', 'time': 'c', 'value1': 127, 'value2': 294 },
{ 'date': 'b', 'time': 'c', 'value1': 127, 'value2': 294 }]

我的目标:

target = [ { 'date': 'a', 
'data': [{ 'time': 'b', 'value1': 123, 'value2': 234 },
{ 'time': 'c', 'value1': 127, 'value2': 294 }] },
{ 'date': 'b',
data: [{ 'time': 'c', 'value1': 127, 'value2': 294 }] }]

我做了什么:

let data1 = rawdata.map(item => {
return {
date: item.date,
data: [
{ time: item.time,
value1: item.value1,
value2: item.value2
}
]
}
})

如何concat data1按日期键排序?

最佳答案

使用reduce:

let rawdata = [ { 'date': 'a', 'time': 'b', 'value1': 123, 'value2': 234 },{ 'date': 'a', 'time': 'c', 'value1': 127, 'value2': 294 },{ 'date': 'b', 'time': 'c', 'value1': 127, 'value2': 294 }];
let target = Object.values(rawdata.reduce((acc, { date, ...rest }) => {
if (acc[date]) {
acc[date].data.push({...rest});
} else {
acc[date] = { date, data: [{ ...rest }] };
}
return acc;
}, {}));
console.log(target);
.as-console-wrapper { max-height: 100% !important; top: auto; }

关于javascript - 如何通过对象数组中的键值合并或连接数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56013771/

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