【发布时间】:2020-09-29 02:37:57
【问题描述】:
我想通过对另一个对象数组的值进行多次操作,通过与一些 key 分组来将一个值推送到一个新数组。
我的数组为:
var newArray = [{ltd: "Cpt", stdSquare: "0.35", error: "0.65"},
{ltd: "Cpt", stdSquare: "0.16", error: "0.84"},
{ltd: "Ant", stdSquare: "0.21", error: "0.79"},
{ltd: "Ant", stdSquare: "0.79", error: "0.21"}];
在下面这个减少函数中,我想通过与ltd 分组来将stdSquare 的值相加并推送到results 数组。
但这给了我一个错误:
未捕获的类型错误:map.get 不是函数
var results = [];
const sums = [
...newArray.reduce(
(map, item) => {
const { ltd: key, stdSquare } = item;
let sumOfstdSquare = 0;
const prev = map.get(key);
sumOfstdSquare += stdSquare;
results.push({ltd, sumOfstdSquare});
return results
},
new Map()
).values()
]
期望的输出:
[
{ltd:"Cpt", sumOfstdSquare: 0.51},
{ltd:"Ant", sumOfstdSquare: 1.00}
]
【问题讨论】:
-
似乎是对reduce的错误使用。
map.get is not a function因为您在reduce 函数中返回results,它是一个数组而不是映射并且没有.get方法
标签: javascript