将字符串分隔为整数并存储总和和平均值

时间:2015-07-06 19:30:06

标签: javascript asp-classic

的JavaScript;我想获取一个字符串中的值,该字符串总是具有以下格式,但也有不确定数量的变量:

示例字符串"340=5;339=5;338=3;337=4;336=1;335=4;334=4;333=4"

此字符串中名为340339338等的变量存储整数值,例如54,{{1} } 等等。我想提取每个变量的整数值(提取等号后面的内容)并将它们的总和和平均值存储在两个单独的变量中作为" sum"和" avr"。

4 个答案:

答案 0 :(得分:1)

由于您有一个简单的模式,您可以使用 RegExp 来查找感兴趣的位。以下是使用String.prototype.splitArray.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])
}