【发布时间】:2018-06-15 16:13:18
【问题描述】:
当我 console.log 我的数组时,它显示长度为零。我检查了它是一个使用Array.isArray 的数组,它返回true。还打印出数组值以确保它们存在并显示在控制台中:
[]
0: "a"
1: "b"
2: "c"
3: "d"
length: 4
__proto__: Array(0)
我看到 __proto__: Array(0) 并且我假设这意味着它是一个长度为 0 的数组,但是我如何使其长度不为零以便我可以遍历它?
我的一个想法是这个函数可能是异步的,但我不确定如何解决这个问题。
参考代码:
var list=[]
//getting data from a database
snapshot.forEach(function (node) {
list.push(node.val())
console.log(node.val()) //values print out
})
console.log(list) //array is length zero
我基本上是想在这段代码之后添加一个 for 循环来读取每个值并将其用于其他用途。但是我无法遍历数组,因为它注册为空。
【问题讨论】:
-
我也遇到过一次这个问题,但这实际上不是问题。我在代码中的某个时刻拼接了数组。 Array.splice 工作修改了相同的参考。所以请检查您是否正在执行任何操作,例如 .splice 或 .map 将原始数组修改为零长度
-
我使用的唯一函数是 .push 推送到数组/将元素添加到数组。这会是它的原因吗?否则,我看不到任何其他添加到数组的方法。
-
能否请您显示更多代码?这会有所帮助
-
你在推送异步代码吗?控制台保存对数组的实时引用,因此当您第一次记录它时,您会看到初始值,但是当您展开它时,您会看到异步进行的更改。
-
__proto__中显示的长度是原型对象的长度,不是this对象的长度。
标签: javascript arrays vue.js