【问题标题】:Summing of individual numbers in an array in JavaScriptJavaScript中数组中单个数字的总和
【发布时间】:2016-01-25 13:03:32
【问题描述】:

我正在尝试将每个数组中的所有数字相加并打印出该数组的总和。我不确定如何完成此代码。

例子:

var myArray = [123, 456, 789]

我想让程序打印出 6、15、24。

因为 1+2+3 = 6, 4+5+6=15 和 7+8+9= 24。

我将如何在该数组中添加每个单独的数字?

【问题讨论】:

  • var myArray = [123,457,789]
  • 您可以考虑使用map 从当前数组中的值创建一个新数组,并考虑reduce 从每个数字中的数字创建一个值。
  • 我希望您的问题得到解决,如果是考虑接受最佳答案。见How does accepting an answer work?

标签: javascript arrays


【解决方案1】:

您可以使用Array#mapArray#reduce

使用 ES2015 Arrow Function 语法

myArray.map(el => el.toString().split('').reduce((sum, b) => sum + +b, 0));

var myArray = [123, 456, 789];

var resultArr = myArray.map(el => el.toString().split('').reduce((sum, b) => sum + +b, 0));

console.log(resultArr);
document.body.innerHTML = resultArr; // FOR DEMO ONLY

在 ES5 中:

myArray.map(function (el) {
    return el.toString().split('').reduce(function (sum, b) {
        return sum + +b
    }, 0);
});

var myArray = [123, 456, 789];

var resultArr = myArray.map(function (el) {
    return el.toString().split('').reduce(function (sum, b) {
        return sum + +b
    }, 0);
});

console.log(resultArr);
document.body.innerHTML = resultArr;

【讨论】:

  • 箭头函数比 arr.map(function(n){return (''+n).split('').reduce(function(sum, n){return sum + +n;},0);}) 节省了一些空间,但支持并不普遍。
【解决方案2】:

您必须将每个数字分解为数字,您可以使用模运算符。

例如,X mod 10 将始终从 X 中获取最右边的数字,要删除 X 的最后一个数字,您必须进行整数除法,X div 10。

function parse(array) {
  return array.map(function(item) {
    var n = 0;
    while (item > 0) {
      n += item % 10;
      item = Math.floor(item/10);
    }

    return n;
  });
}

【讨论】:

    猜你喜欢
    • 2022-12-18
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2019-03-29
    • 2022-08-20
    • 2014-04-12
    • 2018-08-05
    相关资源
    最近更新 更多