无法读取未定义的属性“0”

时间:2015-04-10 18:36:53

标签: javascript arrays

getBrand: function(brandId) {
  for(var i=0; i<malls.length; i++) {
    for(var j=0;j<malls[i].brands.length; j++){
      //console.log(malls[i][brands[j]);
      //console.log(malls[i].brands[j].id);
      if(malls.brands[j].id==(brandId)){
        console.log(malls.brands[j].id);
        return malls.brands[j].id;
      }
    }
  }
}

我需要帮助,在我的控制台中我收到此消息:TypeError:无法读取属性&#39; 0&#39;未定义的

3 个答案:

答案 0 :(得分:1)

似乎你有一个对象数组,每个对象都有一个brands属性,其中包含一个对象数组。您的第二个for循环假定malls数组本身具有brands属性,这是不正确的。由于malls.brandsundefined,您会收到该错误。

变化:

if (malls.brands[j].id==(brandId)) {

为:

if (malls[i].brands[j].id==(brandId)) {

答案 1 :(得分:0)

正如@Vohuman指出的那样,我认为您应该写malls[i].brands[j]来访问对象brands中的数组malls[i],否则您将访问整个malls brands 1}}对象数组没有getBrand: function(brandId) { for(var i=0; i<malls.length; i++) { for(var j=0;j<malls[i].brands.length; j++){ if(malls[i].brands[j].id==(brandId)){ console.log(malls[i].brands[j].id); return malls[i].brands[j].id; } } } } 数组属性

{{1}}

答案 2 :(得分:0)

你应该能够做到这一点,避免大惊小怪。

for(var mall of malls) {
    for(var brand of mall) {
        if(brand.id == brandId) return brand.id;
    }
}