javascript - 在 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>
解决方案
只需检查它是否存在:
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");
推荐阅读
- ios - 无法安装 Apple Enterprise 应用程序
- r - 使用Shell从VBA内部执行R脚本不起作用
- tabulator - 如何在制表器中向嵌套树数据动态添加行?
- microsoft-cognitive - 使用 Microsoft 自定义翻译(免费层),我们可以构建自定义模型,但我们可以测试模型吗?
- java - Spring Security 不允许通过 https 访问
- sql - 如何让这个结果在列中显示
- python - Matplotlib 3d plot:在 2 个表面上获取单个颜色图
- tapestry - 在 Apache Tapestry 中从旧 URL 重定向到新 URL
- javascript - 在javascript中的数组内过滤对象内的数组
- python - 带有 upsert = true 的 Mongodb replace_one() 引发重复键错误