请教一下,javascript 中数组的内容怎么样可以变成求和后放在不同的对象里。如图,谢谢!
分割数据,再用map重组
function parseAndSum(data) {
const productMap = new Map();
// 解析数据并计算相同产品的数量
data.forEach(item => {
const items = item.split(",");
for (let i = 0; i < items.length; i += 2) {
const product = items[i];
const quantity = parseInt(items[i + 1]);
if (!productMap.has(product)) {
productMap.set(product, 0);
}
productMap.set(product, productMap.get(product) + quantity);
}
});
// 构建最终的结果数组
const result = Array.from(productMap, ([product, totalQuantity]) => ({ [product]: totalQuantity }));
return result;
}
map+split
onst input = ["a,1", "b,2"];
const output = input.map(item => {
const [key, value] = item.split(",");
return { [key]: Number(value) };
});
console.log(output);
【以下回答由 GPT 生成】
优化后的问题标题: JavaScript中如何将数组内相同字段的值求和并放入新的对象中? 优化后的问题内容: 我想在JavaScript中实现将数组中相同字段的值求和,并将结果放入新的对象中。我希望能够清楚地了解如何解决这个问题,请提供相关的代码或解释。谢谢!
问题标签: javascript
回答:
这个问题可以通过使用JavaScript的reduce()方法和对象的方便性来解决。
首先,我们需要一个数组,其中包含我们想要求和的对象,以及一个用来分组的字段。以下是一个示例数组:
const arr = [
{ name: 'A', value: 1 },
{ name: 'B', value: 2 },
{ name: 'A', value: 3 },
{ name: 'C', value: 4 },
{ name: 'B', value: 5 }
];
我们可以使用reduce()方法来遍历数组并将相同字段的值求和。这是一个示例代码:
const result = arr.reduce((acc, obj) => {
const key = obj.name;
if (!acc[key]) {
acc[key] = { name: key, sum: obj.value };
} else {
acc[key].sum += obj.value;
}
return acc;
}, {});
在上述代码中,我们使用了一个累加器(acc)和一个对象{}作为reduce()方法的初始值。在每次迭代中,我们检查累加器中是否已经有一个具有相同名称的对象。如果没有,则创建一个新对象并将其值初始化为当前元素的值。如果已经存在相同名称的对象,则将其值进行累加。
通过这个代码,我们得到一个包含求和结果的新对象。在上述示例中,结果将是以下对象:
{
A: { name: 'A', sum: 4 },
B: { name: 'B', sum: 7 },
C: { name: 'C', sum: 4 }
}
希望以上代码和解释对您有所帮助!如果还有其他问题,请随时提问。
【相关推荐】