Javascript 循环数组中的对象,取整数值的总和

Javascript 循环数组中的对象,取整数值的总和,javascript,arrays,loops,for-loop,parsefloat,Javascript,Arrays,Loops,For Loop,Parsefloat,我尝试在数组中循环对象,使用键“price”添加所有值 var basket = [ { price: "25.00", id: "Hat" }, { price: "50.00", id: "Jacket" } ] /*objects within array. purpose = able to use a for loop using .length as follows*/ function te

我尝试在数组中循环对象,使用键“price”添加所有值

var basket = [
    {
        price: "25.00",
        id: "Hat"
    }, {
        price: "50.00",
        id: "Jacket"
    }
]

/*objects within array. purpose = able to use a for loop using .length as follows*/

function test() {
    for(var i = 0; i < basket.length; i++){
        totalPrice = 0;
        alert(itemPrice);
        itemNum = basket[i];
        itemPrice = parseFloat(itemNum.price);
        totalPrice += itemPrice;
    }
    alert(totalPrice);
}
var篮=[
{
价格:“25.00”,
id:“帽子”
}, {
价格:“50.00”,
id:“夹克”
}
]
/*数组中的对象。用途=能够使用for循环,使用.length,如下所示*/
功能测试(){
对于(变量i=0;i

我的
itemPrice
警报显示循环在两个对象中运行,先闪烁25,然后闪烁50。为什么我的
totalPrice
变量只存储第二个价格50?运算符
+=
应与
totalPrice=totalPrice+itemPrice
相同?任何解释以及修复将非常感谢,试图获得良好的理解

第一次进入循环时,将
totalPrice
设置为0。然后你加上第一个项目的价格,所以总价格是25。然后第二次进入循环,再次将
totalPrice
设置为0,0+50=50

您应该在循环之前初始化totalPrice。

使用reduce:

basket.reduce( function( previousValue, currentValue ){
           return previousValue += parseInt(currentValue.price) 
 }, 0);
例如:


因为您在循环中将totalPrice设置为0。您应该在循环之前执行此操作。或者您可以使用:
var totalPrice=basket.reduce(函数(pr,cur){return pr+parseFloat(cur.price);},0)(演示:)