[英]JavaScript loop through array, multiply price property by 2
I'm trying to loop through amusementRides
in the doublePrices
function below, multiplying the price by 2 but I get nothing in return. 我试图通过循环amusementRides
在doublePrices
下方运行,由2价格乘以但我得到什么回报。 What am I missing? 我想念什么?
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);
Thanks in advance! 提前致谢!
You can use map function of array and update required fields 您可以使用数组的映射功能并更新必填字段
function doublePrices(amusementRides) {
amusementRidesdouble = amusementRides.map(function(item){
item.price = 2 * item.price;
return item;
})
return amusementRidesdouble;
}
amusementRides
is an array, it is not defined as key values amusementRides
是一个数组,未定义为键值
change the method to 将方法更改为
for (var counter = 0; counter < amusementRides.length; counter++)
{
if (amusementRides[counter].price)
{
alert (amusementRides[counter].price * 2);
amusementRides[counter].price *= 2;
}
}
A good approach would be: 一个好的方法是:
var doublePrices = function( data ) {
data.forEach( function( item ) {
item.price *= 2;
}
return data;
}
you should avoid for-in loop with array 你应该避免与数组的循环
you can use forEach: 您可以使用forEach:
amusementRides.forEach(function(item) {
item.price *= 2;
});
for (var i=0; i<amusementRides.length; i++) {
amusementRides[i].price*=2;
}
I think the only mistake in your code is you have tried to foreach loop like in C#. 我认为代码中的唯一错误是您尝试像C#中那样尝试foreach循环。 In Javascript you can't do that way. 在Javascript中,您无法这样做。
You can modify your code like below. 您可以像下面那样修改您的代码。
for ( var i=0;i<amusementRides.length;i++) {
var price=amusementRides[i];
alert (price *= 2);
}
But the best approach will be : 但是最好的方法是:
amusementRides = amusementRides.forEach( function( item ) {
item.price *= 2;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.