我试图遍历一个对象数组。我想根据距离改变评级。例如,如果距离10-20英里,评级就会下降。
这就是我所做的,但我不知道为什么它不起作用,因为我没有收到任何错误。
<script>
var products = [{product:"Shoe", Rating:"4", Distance:"2"},{product:"Trousers", Rating:"5", Distance:"5"},{product:"Glasses", Rating:"3", Distance:"7"},{product:"Hat", Rating:"2", Distance:"10"}];
var rating = products[1];
var distance = products[2];
for (var i=0; i < products.length; i++) {
if (distance >= 0 && distance <=4)
rating = rating+1;
else if (distance >= 5 && distance <=10)
rating = rating-1;
else if (distance >= 11 && distance <=20)
rating = rating-2;
else if (distance >= 21 && distance <=100)
rating = rating-3;
else if (distance >= 101 && distance <=10000)
rating = rating-4;
else
rating = rating;
console.log(products[i]);
}
</script>发布于 2016-02-03 16:18:23
有几件事我觉得你错过了。首先是循环遍历每个list对象,从不更新评等变量。其次,对象中的距离和评级变量是strings,而不是ints,因此您的比较和操作将关闭。在一开始,你给对象分配等级和距离,而不是对象的值。
我会将变量赋值更改为for循环内的[i],然后是距离或评级。也是parseInt,所以您可以作为一个int进行比较。然后在循环的每一次迭代之后更新评级。
var products = [{
product: "Shoe",
Rating: "4",
Distance: "2"
}, {
product: "Trousers",
Rating: "5",
Distance: "5"
}, {
product: "Glasses",
Rating: "3",
Distance: "7"
}, {
product: "Hat",
Rating: "2",
Distance: "10"
}];
var rating;
var distance;
for (var i = 0; i < products.length; i++) {
rating = parseInt(products[i]['Rating']);
distance = parseInt(products[i]['Distance']);
if (distance >= 0 && distance <= 4)
rating = rating + 1;
else if (distance >= 5 && distance <= 10)
rating = rating - 1;
else if (distance >= 11 && distance <= 20)
rating = rating - 2;
else if (distance >= 21 && distance <= 100)
rating = rating - 3;
else if (distance >= 101 && distance <= 10000)
rating = rating - 4;
else
rating = rating;
products[i]['Rating']=rating;
console.log(products[i]);
}
https://stackoverflow.com/questions/35181951
复制相似问题