从其中获取原始字符串的数组如下所示:
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对象,如上面的示例所示。
发布于 2018-08-01 04:27:22
假设您的数组值是字符串,在它们之间有一条新的行,您可以在数组上进行减缩,在\n上拆分每个值,然后再次减少使用拆分的第一个值on '-':
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)
如果数据每行不干净,则可能需要清理数据或分割空白空间。但这应该是个好的开始。
发布于 2018-08-01 04:43:34
你可以试试这个:
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);
}
}https://stackoverflow.com/questions/51625196
复制相似问题