如何使用forEach将数组中的字符串转换为数字?

时间:2017-12-01 21:22:21

标签: javascript arrays

我试图将这些数组的内容相加:

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});

2 个答案:

答案 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);