我在这里有个问题。 在从ajax
解析JSON对象后,我得到了一个对象(usrobj)console.log(usrobj.available[0]);
其中usrobj.available是一个数组
(2) [{…}, {…}]
0:{currency: "ETH", amount: "0.5"}
1:{currency: "BTC", amount: null}
length:2
__proto__:Array(0)
这会产生像这样的vardump
{currency: "ETH", amount: "0.5"}
amount:"0.5"
currency:"ETH"
__proto__:Object
然而,当我尝试循环
时for(i = 0; i < usrobj.available.length; ++i) {
$('#assets-table').append('<tr>\
<td>'+usrobj.available[i].currency+'</td>\
<td>Available: '+usrobj.available[i].amount+' (Frozen: '+usrobj.frozen[i].amount+')<br /></td>\
...removed for brevity...
未捕获的TypeError:无法读取属性&#39; 0&#39;未定义的
at Object.success (readAssets.js:22)
at i (jquery-3.2.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
at A (jquery-3.2.1.min.js:4)
at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)
有人可以告诉我他们是否在不同的范围内?以及如何解决这个问题?
答案 0 :(得分:0)
你的物品没有&#34;冻结&#34;财产
&#34; usrobj.frozen [I] .amount&#34;所以它崩溃了
如果usrobj.frozen在同一位置的值与usrobj.avaiable相同,则需要以下内容:
let usrobj = {
available: [
{currency: "ETH", amount: "0.5"},
{currency: "BTC", amount: null},
],
frozen: [
null,
{ammount: '10'}
]
}
for(let i in usrobj.available){
console.log(
`Avaiable ${usrobj.available[i].amount}
Frozen ${(usrobj.frozen && usrobj.frozen[0] && usrobj.frozen[0].amount) || 0}
`)
}
答案 1 :(得分:0)
当你在jquery append函数中运行代码 usrobj.available [i] .currency 时,尝试将 this 引用保存到jquery函数之外的变量中使用 ref.usrobj.available [i] .currency
访问追加函数中的 usrobj.available [i] .currency
for(i = 0; i < usrobj.available.length; ++i) {
let ref = this;
$('#assets-table').append('<tr>\
<td>'+ref.usrobj.available[i].currency+'</td>')
....
}