读取对象属性时出现未定义的错误

时间:2013-10-09 07:11:32

标签: javascript

请在运行以下代码时帮助解决控制台中出现的未定义错误

请参阅此JSbin http://jsbin.com/ONOwujA/1/edit

data = [
    {key:"home",value:"hk1"},
    {key:"home",value:"hk2"},
    {key:"home",value:"hk3"},
    {key:"home",value:"hk4"},
    {key:"product",value:"pk1"},
    {key:"product",value:"pk2"},
    {key:"product",value:"pk3"},
    {key:"product",value:"pk4"},
    {key:"service",value:"sk1"},
    {key:"service",value:"sk2"},
    {key:"service",value:"sk3"},
    {key:"service",value:"sk4"}
];

myFilteredKey=[];
for(i=0;i<=data.length;i++){

    if(myFilteredKey.indexOf(data[i].key)!=-1){
        myFilteredKey.push(data[i].key);
        console.log(data[i].key);
    }
}

1 个答案:

答案 0 :(得分:1)

使用i < data.length。如果长度为3,则最大索引为2

您的代码的另一个问题是没有元素会添加到myFilteredKey。由于数组已经为空,因此任何元素都不会满足条件myFilteredKey.indexOf(data[i].key)!=-1。也许您想要使用=== -1,即检查数组中的元素不是而不是它是否在数组中。