需要从数组中获取数字

phk*_*tha 2 javascript arrays node.js

我有一个表格数组:

['32 68', '56 78', '77 99']
Run Code Online (Sandbox Code Playgroud)

我想o/p另一个数组,它将使用JavaScript(NodeJS)包含索引中每个元素的总和.就像是,

['100', '134', '176']
Run Code Online (Sandbox Code Playgroud)

我尝试使用,.split("")但双整数再次分开作为单独的数字.有没有其他方法可以解决这个问题?请注意,i/p可以是单位数字或双位数字.

Jas*_*Cav 5

您需要获取每个项目,拆分空间(如果存在),然后添加相应的拆分.像这样的东西:

var origValues = ['32 68', '56 78', '77 99', '7'];
var addedValues = origValues.map(function(value) {
  return value.split(' ')
    .map(function(sArray) {
      return parseInt(sArray);
    })
    .reduce(function(a, b) {
      return a + b;
    });
});

document.write(JSON.stringify(addedValues));
Run Code Online (Sandbox Code Playgroud)

请注意,上面的示例处理了数组值中只有一位数字的情况.

提供一些关于发生了什么的解释......

  1. 您开始使用原始数组,并将函数映射到传递给该函数的每个值.
  2. 在该函数内部,我将值拆分为一个空格,这将给出一个(可能)两个值的数组.
  3. 然后我再次将map函数应用到数组中,并将数组中的每个值解析为整数.
  4. 最后,我用求和函数减少整数数组.Reduce将累加器函数从左到右应用于数组中的每个项目,因此您将添加所有值.这个结果会一直返回,所以你可以得到你的新数组和你的答案.

它在"绘图"形式中的样子:

Start: origValues = ['32 68', '56 78', '77 99', '7']
Apply map (this will track one value): value = '32 68'
Apply the split: ['32', '68']
Map the parse integer function (I'm going to track both values): [32, 68]
Reduce: 32 + 68 = 100
Run Code Online (Sandbox Code Playgroud)