处理一个类似于以下的对象数组:
const arr = [
{name: "qewregf dqewafs", value: "qewregf dqewafs answer", count: 2},
{name: "survey with select", value: "survey with select answer", count: 2},
{name: "werasd", value: "Donald", count: 1},
{name: "werasd", value: "Jim", count: 1}
];
我试图通过匹配 name
键的值来缩小数组并实现所需的输出,例如:
desiredOutput = [
{name: "qewregf dqewafs", data: [{value: "qewregf dqewafs answer", count: 2}]},
{name: "survey with select", data: [{value: "survey with select answer", count: 2}]},
{name: "werasd", data: [{value: "Donald", count: 1}, {value: "Jim", count: 1}]}
]
这个尝试减小了数组,但我不知道如何合并嵌套值而不会覆盖它们。
const arr = [{"name":"qewregf dqewafs","value":"qewregf dqewafs answer","count":2},{"name":"survey with select","value":"survey with select answer","count":2},{"name":"werasd","value":"Donald","count":1},{"name":"werasd","value":"Jim","count":1}];
const result = arr.reduce((acc, d) => {
const found = acc.find(a => a.name === d.name);
const value = { name: d.name, val: d.value };
if (found) {
acc.push(...value);
}
else {
acc.push({ name: d.name, data: [{ value: d.value }, { count: d.count }] });
}
return acc;
}, []);
console.log(result);
我缺失了什么?
acc.push(...value);
抛出错误。应该改为acc.push(value);
。 - ibrahim mahrir