游小安的gravatar头像
游小安 2015-11-04 17:08:10

js如何实现二维数组各个对应位置相加的算法?

        priveData//数据源

         var total = 0;
        var used = 0;
        var left = 0;
        for(var i = 0 ; i < priveData.length; i++)
        {    var unit = getUnit(priveData[i][0]);
            var calUnit = getCalUnit(unit);//条件
            if (1==calUnit)//业务类型为1,且满足该类型的数据位置
            {
                total=getNum(priveData[i][1]);
                used =getNum(priveData[i][2]);
                left =getNum(priveData[i][3]);                
            }

需求:将所有满足条件的数据相加:getNum(priveData[0][1]+getNum(priveData[1][1]+getNum(priveData[2][1]。

所有回答列表(2)
zzdream的gravatar头像
zzdream  LV4 2015年11月9日

var array = new Array(["1.2","1.3","1.5","1.7"],["2.1","2.3","2.4"]);
var sum = new Array();
for (var i=0;i<array.length;i++){
    sum[i] = 0;
}
for (var count1=0;count1<array.length;count1++){
    for (var count2=0;count2<array[count1].length;count2++){
        sum[count1] += parseFloat(array[count1][count2]);
    }   
}
console.log(sum);
接下来简单说一下计算中容易忽视的问题:

1.未将sum数组元素的值初始化
若没有代码:for (var i=0;i<array.length;i++){ sum[i] = 0; }
FireBug的控制台会提示 detailed error: ReferenceError: sum is not defined sum[count1] += parseFloat(array[count1][count2]);
因为sum[count1]没有初始值。

2.未将array[count1][count2]中的元素转化为浮点型
若没有用 parseFloat将array[count1][count2]转化为浮点型,则计算结果会是一个一维数组["01.21.31.51.7", "02.12.32.4"]。这是因为JS 的加号在数值之间是加法运算,字符串之间是字串连接。 sum[count1] += (array[count1][count2]);其中的“+”是后者。

3.未统一变量类型
若没有统一变量类型,当运算无法返回正确的数值时,就会返回“NaN”值。

评论(0) 最佳答案
游小安的gravatar头像
游小安  LV8 2015年11月9日

噢!已经解决了。不过还是谢谢你的认真,多谢多谢

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友