陷入阵列泡菜

时间:2014-09-01 12:47:06

标签: jquery arrays

我有一个名为CM的数字数组,然后我想将每个数组项计算为另一个数字的百分比,我们称之为totalOfCM(数组CM)中所有数字的总和。

有没有办法可以循环遍历该数组并将结果放入另一个数组而不必每次都手动进行计算?

这就是我现在正在做的事情,但我相信它会更容易:

$(document).ready(function () {

    var CM = [0,5,2,0,0,0];

    var totalOfCM = 0;
    for (var i = 0; i < CM.length; i++) {
        totalOfCM += CM[i] << 0;
    }

    var percentage1CM = parseInt((CM[0] / totalOfCM) * 100)
    var percentage2CM = parseInt((CM[1] / totalOfCM) * 100)
    var percentage3CM = parseInt((CM[2] / totalOfCM) * 100)
    var percentage4CM = parseInt((CM[3] / totalOfCM) * 100)
    var percentage5CM = parseInt((CM[4] / totalOfCM) * 100)
    var percentage6CM = parseInt((CM[5] / totalOfCM) * 100)

    alert(percentage1CM);
    alert(percentage2CM);
    alert(percentage3CM);
    alert(percentage4CM);
    alert(percentage5CM);
    alert(percentage6CM);
});

我当前的Jquery首先统计了该数组的SUM,但后来我手动计算出每个数组项的百分比:( HEre是我正在做的fiddle

如果我需要做更多解释,请告诉我?

有人可以指导我朝正确的方向发展吗?

感谢工厂,

麦克

3 个答案:

答案 0 :(得分:2)

这应该这样做:

var CM = [0,5,2,0,0,0];

// calculate sum first
var sum = CM.reduce(function(prev, current) {
    return prev + current;
}, 0);

var percentages = CM.map(function(value) {
    return value * 100 / sum;
});

之后,percentages是一个数组,其百分比对应于CM的每个值。

答案 1 :(得分:1)

使用简单的 for 循环。

var percentage = []; //Declare an array
for (var i = 0; i < CM.length; i++) {
  percentage.push(parseInt((CM[i] / totalOfCM) * 100)); //Add calculated percentage
}

DEMO

答案 2 :(得分:0)

尝试使用$.map()

$(document).ready(function () {
    var CM = [0, 5, 2, 0, 0, 0];
    var totalOfCM = 0;
    for (var i = 0; i < CM.length; i++) {
        totalOfCM += CM[i] << 0;
    }
    var arr=$(CM).map(function(i,v){
        return v*100/totalOfCM;
    }).get();
    console.log(arr);// your final array
});

<强> Demo