gpt4 book ai didi

javascript - 我如何在javascript中返回两个对象

转载 作者:行者123 更新时间:2023-12-04 08:22:25 24 4
gpt4 key购买 nike

举个例子
我有两个数组

const tempData = [
{ day: "Mon", temp: 33.6 },
{ day: "Tue", temp: 34.6 },
{ day: "Wed", temp: 33.1 },
{ day: "Fri", temp: 35.6 }
];
const coughData = [
{ day: "Mon", count: 2 },
{ day: "Wed", count: 1 },
{ day: "Thur", count: 1 },
{ day: "Fri", count: 3 },
{ day: "Sat", count: 1 }
];
我需要将这些数组合并为一个,以便如果日期匹配,则计数值添加到该对象,如果不匹配,它将两个对象添加到数组中。
不知道解释是不是不是很清楚但是
预期的结果应该是这样的:
const data = [
{ day: "Mon", temp: 33.6, count: 2 },
{ day: "Tue", temp: 34.6 },
{ day: "Wed", temp: 33.1, count: 1 },
{ day: "Thur", count: 1 },
{ day: "Fri", temp: 35.6, count: 3 },
{ day: "Sat", count: 1 }
];
我正在尝试像这样使用 map 函数,但无法理解如果它们不匹配,我该如何返回这两个对象:
const data = tempData.map(temp => {
coughData.map(cough => {
if (temp.day === cough.day) {
return (temp.count = cough.count);
} else {
return cough;
}
});
return temp;
});

最佳答案

您可以先合并数组的对象,然后使用 .reduce() 连同 Map来累积值。 map 可以通过 day 键控属性,这将允许您将相关的对象属性组合在一起。然后您可以使用 Array.from() 将您的 Map 转换回一个对象数组,如下所示:

const tempData = [{ day: "Mon", temp: 33.6 }, { day: "Tue", temp: 34.6 }, { day: "Wed", temp: 33.1 }, { day: "Fri", temp: 35.6 }];
const coughData = [{ day: "Mon", count: 2 }, { day: "Wed", count: 1 }, { day: "Thur", count: 1 }, { day: "Fri", count: 3 }, { day: "Sat", count: 1 }];

const arr = [...tempData, ...coughData];

const result = Array.from(arr.reduce((map, {day, ...rest}) => {
const seen = map.get(day) || {day};
return map.set(day, {...seen, ...rest});
}, new Map).values());

console.log(result);

关于javascript - 我如何在javascript中返回两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65438423/

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