为什么日志说“无法读取未定义的属性推送”

时间:2019-03-01 10:19:08

标签: javascript

我有一个演示文稿,我想我会损坏笔记本电脑。

我有这段运行良好的代码,并且没有进行任何更改,我得到了此消息。

这是我得到错误的代码

 var array = [];
    for (let i = 0; i < customerDetails.length; i++){
            array[i].push(customerDetails[i].name);
    }

btw customerDetails是对象数组,即[{},{},{}]

数组未定义到底是什么?最初,我在另一个地方有数组定义(在函数外,所以它工作正常,然后将其移到那里只是为了测试)。

是我太累了,看不到它,还是实际导致了另一个问题?错误本身对我来说没有意义。

编辑: 我在这里从下面给出答案,应该没有array [i] .push,而是array.push 尽管我没有改变,但仍然应该看到它。 感谢这个社区的帮助,您真的很棒!

3 个答案:

答案 0 :(得分:4)

push()是与array相关的功能。您正在使用array[i].push()将值推入数组的元素,该元素无效且不存在。使用array

将其直接推入array.push()
var array = [];
    for (let i = 0; i < customerDetails.length; i++){
            array.push(customerDetails[i].name);
    }

答案 1 :(得分:1)

使用array.push代替array [i] .push

var array = [];
for (let i = 0; i < customerDetails.length; i++){
        array.push(customerDetails[i].name); // no need give array index while pushing data
}

答案 2 :(得分:0)

var array = [];
    for (let i = 0; i < customerDetails.length; i++){
            array.push(customerDetails[i].name);
    }

您不能使用array[i].push(),因为它引用数组中的单个元素而不是数组本身。