JavaScript循环数组,将price属性乘以2

时间:2016-02-07 18:21:37

标签: javascript for-loop

我正在尝试在amusementRides函数中循环doublePrices,将价格乘以2,但我得不到任何回报。我错过了什么?

var amusementRides = [  
   {  
      id:'A1',
      name:'superman',
      price:12,
      opening_dates:[  
         'Monday',
         'Tuesday',
         'Wednesday',
         'Thursday',
         'Friday',
         'Saturday',
         'Sunday'
      ],
      children_access:false
   },
   {  
      id:'A2',
      name:'raging bull',
      price:10,
      opening_dates:[  
         'Saturday',
         'Sunday'
      ],
      children_access:false
   },
   {  
      id:'A3',
      name:'teacups',
      price:7,
      opening_dates:[  
         'Friday',
         'Saturday',
         'Sunday'
      ],
      children_access:true
   }
];

// Define variable
var amusementRidesDouble = doublePrices(amusementRides);

// Define function to multiply price by 2
function doublePrices(amusementRides) {

    for (var price in amusementRides) {
        if amusementRides.hasOwnProperty(price) {
            alert (price *= 2);
    }
}
}

console.log(amusementRidesDouble);

提前致谢!

6 个答案:

答案 0 :(得分:3)

您可以使用数组的map函数并更新必填字段

function doublePrices(amusementRides) {
    amusementRidesdouble = amusementRides.map(function(item){
        item.price = 2 * item.price;
        return item;
   })
   return amusementRidesdouble;

}

答案 1 :(得分:1)

amusementRides是一个数组,未定义为键值

将方法更改为

for (var counter = 0; counter < amusementRides.length; counter++) 
  {
     if (amusementRides[counter].price) 
       {
            alert (amusementRides[counter].price * 2);
            amusementRides[counter].price *= 2;
        }
  }

答案 2 :(得分:1)

一个好的方法是:

var doublePrices = function( data ) {
    data.forEach( function( item ) {
        item.price *= 2;
    }
    return data;
}

答案 3 :(得分:0)

你应该避免使用数组

的for-in循环

你可以使用forEach:

amusementRides.forEach(function(item) {
  item.price *= 2;
});

答案 4 :(得分:0)

for (var i=0; i<amusementRides.length; i++) { 
amusementRides[i].price*=2;
}

答案 5 :(得分:0)

我认为你的代码中唯一的错误是你试图像在C#中那样预习循环。在Javascript中你不能这样做。

您可以修改以下代码。

for ( var i=0;i<amusementRides.length;i++) {
    var price=amusementRides[i];
        alert (price *= 2);
}

但最好的方法是:

amusementRides = amusementRides.forEach( function( item ) {
                 item.price *= 2;
              }