无法读取未定义列表列表的属性“名称”

时间:2017-03-06 09:03:58

标签: javascript arrays

嘿,我做错了什么?

var list = [{
        name: 'client1'
    },
    {
        name: 'client2'
    },
    {
        name: "client3"
    }
];

for (var i = 0; i <= list.length; i++) {
    if (list[i]['name'].indexOf(self.autocomplete) !== -1) {
        self.box = self.box + '<li>' + list[i]['name'] + '</li>';
    }
}

我收到错误Uncaught TypeError:无法读取未定义的属性'name'

1 个答案:

答案 0 :(得分:4)

for loop的执行时间为list.length+1次。这就是为什么您为最后undefined获取item的原因。

JavaScript arrays零索引:数组的第一个元素位于索引0处,最后一个元素位于索引处,等于数组的值。长度属性减去1。

更改

for(var i=0; i<=list.length; i++){}

for(var i=0; i<list.length; i++){}