假设我有类似于
[
{productName:"nord128",quantiy: 4},
{productName:"nord128", quantiy:5},
{productName:"nord128", quantiy:8},
{productName:"Iphone11",quantiy:3},
{productName:"nord128",quantiy:6}
]如何创建一个数组,其中包含productName及其在数组中的总价值,
[[nord128,23],[Iphone11,3]]我试过了
res.forEach((element) => {
array.push([element.productName, element.quantity])
})得到了数组的结果,
[["nord128",4],["nord128",5],["nord128",8],["Iphone11",3]["nord128",6]]但是,当我将数组的下一个元素与当前元素进行比较时,会出现一个错误。
for (let i = 0; i < array.length - 1; i++) {
if (array[i][0] === array[i + 1][0]) {
/// some condition
}
}获取错误为arrayi+1//此处0未定义
发布于 2021-05-14 21:27:10
您可以使用Array.reduce创建一个累加器对象,该对象基于productName计算总数。
var x = [{
productName: "nord128",
quantiy: 4
},
{
productName: "nord128",
quantiy: 5
},
{
productName: "nord128",
quantiy: 8
},
{
productName: "Iphone11",
quantiy: 3
},
{
productName: "nord128",
quantiy: 6
}
];
const obj = x.reduce(function (acc, val) {
acc[val.productName] = val.quantiy + (acc[val.productName] || 0)
return acc
}, {})
console.log({
obj
})
https://stackoverflow.com/questions/67540947
复制相似问题