[英]undefined items from array in TypeScript for loop
当我在某些REST服务上设置一个匿名回调函数时,我会得到一个非常奇怪的行为,如果我只是console.log
REST服务的结果,我得到预期的有效负载(一个对象数组)。 但是,当我在同一个数组上运行循环并尝试获取某个键的值时,我得到一个错误,因为显然该项是undefined
...
callback: (result) => {
console.log(result); // outputs [{text: 'foo'}, {text: 'bar'}]
for(let item of result){
console.log(item.text); // error can't read text of undefined
console.log(item); // HOWEVER... this works... :/
}
}
有任何想法吗? 必定会出现某种异步行为,但我无法弄清楚。
谢谢!
你很可能有一个格式错误的阵列。 这是一个演示问题的示例:
// Malformed array
const result = [
{text: 'foo'},
{text: 'bar'},
]
result.length = 3;
// Your code
console.log(result); // outputs [{text: 'foo'}, {text: 'bar'}]
for(let item of result){
console.log(item.text); // error can't read text of undefined
console.log(item); // HOWEVER... this works... :/
}
这不是你如何迭代数组。 您应该使用完整的for循环或forEach
函数:
for(let i = 0, l = result.length; i < l; i++) {
console.log(result[i].text);
}
要么
result.forEach((item) => {
console.log(item);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.