首页 > 解决方案 > 在 if 语句上访问数组

问题描述

我有这样的代码:

function firstArrived(cars) {
  // code below here
  var yellow = [];
  var red = [];
  var  black = [];
  for(var i=0; i <= cars.length; i++){
       if(cars[i][1] === 'yellow'){
      yellow.push(cars[i][0]);
    }
    else if(cars[i][1] === 'red'){
      red.push(cars[i][0]);
    }
    else{
      black.push(cars[i][0]);
    }
  }
return yellow;
};

//测试用例

console.log(firstArrived([['1171 CA', 'yellow'],['1234', 'black'],['V 76998', 'red']]));

代码应该有这样的结果:

[ '1171 CA' ] 

但相反,我遇到了这样的错误:

未捕获的类型错误:无法读取未定义的属性“1”

你能帮我找出我的代码有什么问题吗?多谢。

标签: javascriptarraysfor-loopif-statement

解决方案


由于数组索引从 开始0,因此i <= cars.length您正在循环超出数组的长度。只需使用<而不是<=条件:

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

function firstArrived(cars) {
  // code below here
  var yellow = [];
  var red = [];
  var  black = [];
  for(var i=0; i < cars.length; i++){
       if(cars[i][1] === 'yellow'){
      yellow.push(cars[i][0]);
    }
    else if(cars[i][1] === 'red'){
      red.push(cars[i][0]);
    }
    else{
      black.push(cars[i][0]);
    }
  }
return yellow;
};
//TEST CASE

console.log(firstArrived([['1171 CA', 'yellow'],['1234', 'black'],['V 76998', 'red']]));


推荐阅读