js中forin如何求和?请高手看看:varHeizhu=newArray[0,1,2,3,4,5];for(numinHeizhu){sum=su

JavaScript014

js中forin如何求和?请高手看看:varHeizhu=newArray[0,1,2,3,4,5];for(numinHeizhu){sum=su,第1张

让我来告诉你答案!varHeizhu=newArray([0],[1],[2],[3],[4],[5])

varsum=0

for(numinHeizhu){

alert(Heizhu[num])

sum=sum+parseInt(Heizhu[num])//求和

}

alert(sum)

这样写。

首先你的数组定义格式有问题,

newArray[i]//这种构造器是定义长度为i的数组,不能直接初始化

其次你的sum变量没有定义

//for循环,for in方法既可以遍历数组又可以遍历对象的可遍历属性

var obj=[{a:1},{a:1},{a:1,b:[{c:1},{c:2},{c:3}]}]

var obj2=[{a:1},{a:1},{a:1},{b:[{c:1},{c:2},{c:3}]}]

var sum=0

var sumArr = function(arr){

    for(var i in arr){

        if(typeof(arr[i])=='number'){

            sum += arr[i]

        }else{

            sumArr(arr[i])

        }

    }

}

sumArr(obj2)

console.log(sum)

//如果你理解闭包,上面的代码还可以优化成:

var sumArr = function(){

    var sum=0

    var countSum = function(arr){

        for(var i in arr){

            if(typeof(arr[i])=='number'){

                sum += arr[i]

            }else{

                countSum(arr[i])

            }

        }

        return sum

    }

    

    return countSum

}()

console.log(sumArr(obj))

//下面的方法虽然不是for循环,但是很简单暴力

//水平有限,正则可能不是很优雅

function getSum(arr){

    var sum=0

    var str=JSON.stringify(arr)                //JSON字符串格式

    

    //提取出':'后面的数字

    var strArr=str.match(/:\d/g).map(function(val){

        return val.slice(1)                    

    })

    //求和

    strArr.forEach(function(val){

        sum += parseFloat(val)

    })

    return sum

}

for in在javascript中的具体情况是:

1、解析

for...in 语句对应于一个对象的每个,或一个数组的每个元素,执行一个或多个语句。 for (variable in [object | array])

2、参数

variable,必选项。一个变量,它可以是 object 的任一属性或 array 的任一元素。object, array,可选项。要在其上遍历的对象或数组。

3、说明

在循环的每次迭代前,variable 被赋予 object 的下一个属性或 array 的下一个元素。然后可以在循环内的任一语句中使用它,就好像正在使用 object 的该属性或 array 的该元素一样。

当在一个对象上迭代时,没有办法决定或控制把对象的成员赋给 variable 的次序。在数组内将按元素的次序执行迭代,也就是,0、1、2、......