我试图将这些数组的内容相加:
var cardsBen = [10,2]
var cardsAmy = [4,10]
当我使用for循环时,它可以工作。
for(var i = 0; i < cardsBen.length; i++){
cardsBen[i] = Number(cardsBen[i]);
}
当我使用forEach时,它无法转换。
cardsAmy.forEach(function(item)
{
Number(item);
});
我知道这一点,因为当我减少数组时,我得到12分为Ben,410分为Amy。
var sumBen = cardsBen.reduce(function(sum, nbr){return sum + nbr});
var sumAmy = cardsAmy.reduce(function(sum, nbr){return sum + nbr});
答案 0 :(得分:7)
原始值不能变异。因此,在执行Number(item)
时,您必须将其分配回数组,如:
cardsAmy.forEach(function(item, i) {
cardsAmy[i] = Number(item);
});
您可以直接在reduce
(无需上述forEach
代码)中执行此操作,例如:
var sumBen = cardsBen.reduce(function(sum, nbr) { return sum + Number(nbr); }, 0);
// ^^^^^^^ ^
答案 1 :(得分:2)
你可以使用带隐式转换的reduce来编号为unary plus +
。
sum = array.reduce(function (s, v) {
return s + +v;
}, 0);