繁体   English   中英

TypeScript中用于循环的数组中的未定义项

[英]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... :/
}

固定

  • 过滤掉空项目。

更多提示

  • console.log将为不合理的东西打印一个空行。 您可能没有在调试中看到这一点
  • 阅读JavaScript数组漏洞
  • 享受生活🌹

这不是你如何迭代数组。 您应该使用完整的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM