javascript上的Array reduce返回具有数组链接性的错误值
我在试着对一组对象进行数学运算。使用贴图获取对象内部的值,然后减少计算量。由于某些原因,reduce无法返回正确的值 这是一个例子:javascript上的Array reduce返回具有数组链接性的错误值,javascript,arrays,Javascript,Arrays,我在试着对一组对象进行数学运算。使用贴图获取对象内部的值,然后减少计算量。由于某些原因,reduce无法返回正确的值 这是一个例子: var test = [{ id: 1, value: 2 }]; var newe = test.map((x) => x.value).reduce(function(total, sum) { console.log([total, sum]); return total + (sum * 2); }); 它应该返回4,但是它返回2
var test = [{
id: 1,
value: 2
}];
var newe = test.map((x) => x.value).reduce(function(total, sum) {
console.log([total, sum]);
return total + (sum * 2);
});
它应该返回4,但是它返回2
你知道怎么回事吗?我在JSFIDLE上共享代码您应该传递初始值以减少函数
var test = [{
id: 1,
value: 2
}];
var newe = test.map((x) => x.value).reduce(function(total, sum) {
console.log([total, sum]);
return total + (sum * 2);
}, 0);
document.getElementById('output').innerHTML = newe;
医生
如果未提供initialValue,reduce将从索引1开始执行回调函数,跳过第一个索引。如果提供了initialValue,它将从索引0开始
因此,基本上,您的方法跳过第一个索引0,第一个值返回2。要解决这个问题,需要传递initialValue,在本例中为0
var测试=[{
id:1,
价值:2
}];
var newe=test.mapx=>x.value.reducefunctiontotal,总和{
返回总计+总和*2;
}, 0;
// ^
// |
//+--初始值
console.lognewe;
.作为控制台包装{max height:100%!important;top:0;}您忘记为reduce提供初始值,因此它根本不会迭代,只解析为一个值的值。始终传递初始值以进行reduce。