的JavaScript;我想获取一个字符串中的值,该字符串总是具有以下格式,但也有不确定数量的变量:
示例字符串"340=5;339=5;338=3;337=4;336=1;335=4;334=4;333=4"
此字符串中名为340
,339
,338
等的变量存储整数值,例如5
,4
,{{1} } 等等。我想提取每个变量的整数值(提取等号后面的内容)并将它们的总和和平均值存储在两个单独的变量中作为" sum"和" avr"。
答案 0 :(得分:1)
由于您有一个简单的模式,您可以使用 RegExp 来查找感兴趣的位。以下是使用String.prototype.split
和Array.prototype.reduce
var str = "340=5;339=5;338=3;337=4;336=1;335=4;334=4;333=4";
var parts = (';'+str).split(/;\d+=/).slice(1), // passing the RegExp to .split
sum = parts.reduce(function(prev, cur) {
return prev + +cur; // notice String cur to Number
}, 0),
avr = sum / parts.length; // assuming you want mean average
console.log(sum, avr); // 30 3.75
答案 1 :(得分:1)
没什么好看的,希望好看和可读。
function calculate(myString) {
var values = myString.split(';');
var sum = 0;
values.forEach(function(el, i) {
sum += parseInt(el.split('=')[1]);
});
return {
sum: sum,
avg: sum / values.length
}
}
var results = calculate("340=5;339=5;338=3;337=4;336=1;335=4;334=4;333=4");
console.log(results.sum); // => 30
console.log(results.avg); // => 3.75
答案 2 :(得分:0)
我会拆分字符串然后循环遍历所有值以获得总和和平均值。
var str="340=5;339=5;338=3;337=4;336=1;335=4;334=4;333=4";
var array =str.split(/;?\d+=/g);
var sum=0;
for(i=0;i<array.length;i++){
if(!isNaN(parseInt(array[i])))
sum+=parseInt(array[i]);
else{
array.splice(i,1);
i--;
}
}
console.log(sum);
console.log(sum/array.length);
答案 3 :(得分:0)
这是一个简单的字符串评估。您需要的唯一方法是拆分,您需要的唯一逻辑是for循环。
var values = "340=5;339=5;338=3;337=4;336=1;335=4;334=4;333=4";
var sum = []
var avr = []
values = values.split(';');
for(i=0; i<values.length; i++){
numbers = values[i].split('=')
sum.push(numbers[0])
avr.push(numbers[1])
}