首页 > 解决方案 > 如果条件不满足,则减少循环迭代

问题描述

我有以下代码:

for (var i = 0; i < data.status.length; i++) {
    if(data.status[i].isMode == 0) {
        var row = '<tr><td>' + data.status[i].Name + '</td><td>' + data.status[i].Pay + '</td></tr>';
        var row = '<tr><td>' + data.status[i].Name + '</td><td>' + data.status[i].Pay + '</td></tr>';
    }
}

它工作顺利,但如果有 5 个项目,data.status.length并且2项目的值为isModeas0和其他为 1,它仍然循环5时间并显示这些值,我只想隐藏这些值,因为它们用于金额计算,我不不希望他们的价值观也成为总和

这是我的 JSON

{
  "status": [
    {
      "Name": "Apple",
      "Pay": "1",
      "isMode": "0"
    },
    {
      "Name": "Banana",
      "Pay": "1",
      "isMode": "0"
    },
    {
      "Name": "Kiwi",
      "Pay": "1",
      "isMode": "1"
    },
    {
      "Name": "Fruits",
      "Pay": "1",
      "isMode": "1"
    },
    {
      "Name": "Basket",
      "Pay": "1",
      "isMode": "1"
    }
  ]
}

标签: javascriptjquery

解决方案


根据 isMode 属性过滤您的对象数组,然后循环使用结果

var newArray =data.status.filter(function (el) {
    return el.isMode==0;
}
for (var i = 0; i < newArray.length; i++) {
    var row = '<tr><td>' + newArray[i].Name + '</td><td>' + newArray[i].Pay + '</td></tr>';
}

推荐阅读