开发者问题收集

数组长度为零,但数组不为空

2020-11-04
2236

当我尝试遍历数组、获取其长度或访问索引时,我收到错误 TypeError: 无法读取未定义的属性“map”

数组不为空,当我 console.log() 它时,我得到了。

0: {user_id: 11, …}
length: 1
__proto__: Array(0)

我看到 proto : Array(0),我假设这意味着它是一个长度为 0 的数组,但我如何使其长度非零以便我可以遍历它?

参考代码:

useEffect(() => {
     blog.authors.map(data => {
         console.log(data)
      })
}, [blog])

我也试过了。它有效,但我立即收到类似的错误。

useEffect(() => {
        (async() => {
            await blog.authors.map(data => {
                console.log(data)
            })
        })()
}, [blog])
2个回答

通过简单检查 blog.authors 是否未定义可以解决这个问题。

Bohdan Yarish
2020-11-04

不,数组索引是基于 0 的。

var arr = ['a', 'b'];
console.log(arr.length); // => 2
console.log(arr[0]);     // => a

因此,您无需对什么有效做出令人困惑的断言,也不必在不提供代码的情况下提供其他代码,只需查看结果即可:

useEffect(() => {
     console.log({blog});
     console.log({authors: blog.authors });
     blog.authors.map(data => {
         console.log(data)
      })
}, [blog])

因为我怀疑 blog 会随着时间的推移而发生变化,有些作者和一些作者未定义。

farvilain
2020-11-04