我有以下代码:
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>';
}
}
它工作平稳,但是如果data.status.length
之前有5个项目,并且2
的项目中isMode
的值为0
,其他值为1,则仍会循环{ {1}}并显示这些值,我只想隐藏那些值,并且由于它们用于金额计算,所以我也不想它们的值也成为总数
这是我的JSON
5
答案 0 :(得分:1)
如果您希望在找到isMode == 0
条件的匹配项后停止循环,请使用break
语句
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>';
break;
}
}
您还可以使用find
方法:
var found = data.status.find(s => s.isMode == 0);
if (found) {
var row = '<tr><td>' + found.Name + '</td><td>' + found.Pay + '</td></tr>';
}
答案 1 :(得分:1)
根据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>';
}
答案 2 :(得分:0)
有两种选择:
在内部打印您的状态。
for (var i = 0; i < data.status.length; i++) {
if(data.status[i].isMode == 0) {
document.write('<tr><td>' + data.status[i].Name + '</td><td>' + data.status[i].Pay + '</td></tr>');
}
}
过滤外部模式并打印。
data = data.status.filter(e => e.isMode == 0)
for (var i = 0; i < data.status.length; i++) {
var row = '<tr><td>' + data.status[i].Name + '</td><td>' + data.status[i].Pay + '</td></tr>';
}