首页 > 解决方案 > NodeJS:如何将大字符串分成一个数字数组,然后将所有具有偶数索引的字符串相加

问题描述

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

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 之类的东西加在一起)并将该数字存储在一个变量中。

我该怎么办?

编辑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对象,就像上面的例子一样

标签: javascriptarraysnode.js

解决方案


假设您的数组值是字符串,它们之间有一个新行,您可以对数组进行归约,将每个值拆分\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如果每行不干净,您可能需要清理数据或拆分空格。但这应该是一个好的开始。


推荐阅读