javascript - 循环遍历结果并根据距离改变值

标签 javascript arrays if-statement

我正在尝试循环遍历对象数组。我想根据距离的远近改变评级。例如,如果距离为 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>

最佳答案

我觉得你缺少一些东西。首先是循环遍历每个列表对象并且从不更新评级变量。其次,对象中的距离和评级变量是字符串而不是整数,因此您的比较和操作将关闭。一开始,您将评级和距离分配给对象,而不是对象的值。

我会将变量赋值更改为 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]);
}

关于javascript - 循环遍历结果并根据距离改变值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35181951/

相关文章:

if-statement - 如何在Notepad++中的花括号之间选择所有代码?

javascript - JS Dice - 使用 if 条件将 Math.random 值分配给 html 图像

javascript - 滚动长度如何根据网页长度的增加而变化

arrays - 和大于给定值的子数组的最小和

python - Numpy 以特定顺序 reshape 数组

arrays - 从 JSON 数组列表中检索未知的键名和值

ios - 是否可以检查用户何时下载我的 ios 应用程序?

javascript - 如何循环播放歌曲列表而不同时播放所有歌曲 (JavaScript)?

javascript - 当过滤器上没有可用项目时,如何在 shuffle.js 上显示消息?

javascript - knockout 数组作为 JavaScript 中的全局变量