需要从数组中获取数字

时间:2015-04-16 00:28:35

标签: javascript arrays node.js

我有一个表格数组:

['32 68', '56 78', '77 99']

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

['100', '134', '176']

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

3 个答案:

答案 0 :(得分: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));

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

提供有关正在发生的事情的一些解释......

  1. 您开始使用原始数组,并且mapping a function指向传递给该函数的每个值。
  2. 在该函数中,我将值除以空格,这将给出一个(可能)两个值的数组。
  3. 然后我再次将map函数应用到数组中,并将数组中的每个值解析为整数。
  4. 最后,我reduce带有求和函数的整数数组。 Reduce将累加器函数从左到右应用于数组中的每个项目,因此您将添加所有值。这个结果会一直返回,因此您可以获得新答案。
  5. “绘画”形式的样子:

    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
    

答案 1 :(得分:4)

我没有时间解释(抱歉)但是,split + reduce会这样做。



var arr = ['32 68', '56 78', '77 99'];

var sumArray = arr.map(function (s) {
	return s.split(' ').reduce(function (a, b) {
	  return parseInt(a, 10) + parseInt(b);
	});
});

document.write(JSON.stringify(sumArray));




答案 2 :(得分:0)

您实际上并不需要地图或任何东西。对于每个字符串,我们可以.splitNumber ify,然后添加。

secondArray[value] = 
    Number((firstArray[value].split(" "))[0]) + 
    Number((firstArray[value].split(" "))[1]);

修改它并将其转换为for循环,我们得到:

var arr2 = [];
for(var i = 0; i < arr.length; i ++){
    arr2.push(
        Number((arr[i].split(" "))[0]) + 
        Number((arr[i].split(" "))[1]));
}
arr = arr2;