首页 > 解决方案 > 在 JSON 上的 for 循环中排除“未定义”结果

问题描述

当前返回所有结果,但是当没有找到 _miner 时,它会在控制台中返回 undefined 并继续显示时间和块。当没有 _miner 返回时,我怎么能没有输出?

输出应该是这样的,其中时间“3”没有 _miner 匹配,因此没有输出任何内容。

1
123
10
2
124
10
4
123
10

$.ajax({
  url: "https://xxxxxxxxxxxx/api/payments",
  dataType: 'json',
  success: function(data) {

    var _miner = "t1XHpNtYY2N3EMDRoX9RM2hq4DWWPZSmawJ";

    var addr = _miner;

    for (var i = 0; i < data.length; i++) {

      //Name
      console.log(data[i].name);

      var payments = data[i].payments;
      for (var j = 0; j < payments.length; j++) {

        //Time
        console.log(payments[j].time);

        //blocks
        var blocks = payments[j].blocks;
        for (var b = 0; b < blocks.length; b++) {
          console.log(blocks[b])
        }

        console.log(payments[j].amounts[_miner]);


      }
    }

  },
  error: function() {
    //alert("Was unable to get info!");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

标签: javascriptjsonajax

解决方案


只需检查它是否存在:

if (payments[j].amounts[_miner] === undefined)
    console.log(payments[j].amounts[_miner]);

或者更好:

if (payments[j].amounts[_miner] === undefined) 
   console.log(payments[j].amounts[_miner]) 
else
   console.log("no payments") 

甚至:

console.log((payments[j].amounts[_miner] === undefined) ? payments[j].amounts[_miner] : "no payments");

推荐阅读