NodeJS:如何将大字符串分成数字数组,然后将所有带有偶数索引的字符串相加

时间:2018-08-01 04:07:08

标签: javascript arrays node.js

我从中获取原始字符串的数组如下所示:

arr[0]:
  11-3
  12-6
arr[1]:
  5-9
  7-2
  18-2
arr[2]:
  2-7

(这只是一个例子,一般的想法是arr中可以有任意数量的对象,并且每个对象中的字符串都包含任意数量的#-#组合)

我正在尝试将左侧的所有数字加在一起(如果使用上面的示例,它将像11、12、5、7、18和2一样加在一起)并将该数字存储在变量中。 / p>

我将如何处理?

编辑1:尝试输入代码:

var winsLossNums = winLoss[0].match(/\d+/g).map(Number)

for (var i = 0; i < winLoss[0].match(/\d+/g).map(Number).length; i++) {
  if (i % 2 === 0) {
    totalNums.push(winLoss[0].match(/\d+/g).map(Number)[i]);
  }
}
}   

此代码在一个循环中,每个循环都有一个新的arr对象,如上面的示例一样

2 个答案:

答案 0 :(得分:1)

假设您的数组值是一个字符串,并且它们之间有换行符,则可以缩小数组,在\n上拆分每个值,然后在第一个值上对'-'进行拆分,再缩小一次:

let arr = ['11-3\n12-6', '5-9\n7-2\n18-2',  '2-7']

let tot = arr.reduce((a, c) => {
    let pairs = c.split('\n')
    return a + pairs.reduce((a, c)=> a + Number(c.split('-')[0]), 0)
}, 0)

console.log(tot)
console.log(11 + 12 + 5 + 7+ 18 + 2)

如果不是每行一个\n,则可能需要清理数据或在空格上拆分。但这应该是一个好的开始。

答案 1 :(得分:0)

您可以尝试以下方法:

let arr = [
      [
        '11-3',
        '12-6'
      ], [
        '5-9',
        '7-2',
        '18-2'
      ], [
        '2-7'
      ]
    ];

    let sum = 0;
    for (let index=0; index<arr.length; index++) {
        let arrayMasterElement = arr[index];
        // console.log(arrayMasterElement);
        for (let index2=0; index2<arrayMasterElement.length; index2++) {
          let arrayElement = arrayMasterElement[index2];
          let elementArray = arrayElement.split('-');
          let intVal = parseInt(elementArray[0]);
          console.log('Int value: ' + intVal);
          sum += intVal;
        }
        if (index == arr.length - 1) {
            console.log('Sum: ' + sum);
        }
    }