我从中获取原始字符串的数组如下所示:
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
对象,如上面的示例一样
答案 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);
}
}