在循环中调用数组的索引导致错误

时间:2016-03-05 05:38:01

标签: javascript jquery json ajax

所以我基本上导入了一个JSON文件。我找回了许多数组,每个数组中都有4个元素。我想将每个数组中的第3个元素解析为它自己的变量数组。

$("#nextQ").click(function() {

  var Quotes = [];
  var totalQ //The total number of available quotes to choose from

  //Get quotes from JSON file
  $.ajax({
    url: '../facts.json',
    datatype: 'json',
    type: 'get',
    success: function(data) {
      console.log(data[0][2]); //This WORKS
      console.log(data.length); //Returns 64

      totalQ = data.length;

      for (i = 0; i <= totalQ; i++) {
        Quotes[i] = data[3][2]; //This WORKS
        Quotes[i] = data[i][2]; //This gives ERROR

      }
    }
  });

});

当我使用data[i][2]时,我收到此错误:Uncaught TypeError: Cannot read property '2' of undefined。但是,如果我使用data[6][2]或任何其他数字,则不会发生此错误。

1 个答案:

答案 0 :(得分:3)

您需要将for循环条件从i <= totalQ;更新为i <totalQ;,因为索引从0开始

for (i = 0; i < totalQ; i++) {
    Quotes[i] = data[i][2]; 
}

或者您可以使用$.each()作为@adeneo建议

$.each(data,function(i,v){
  Quotes[i] = v[2]; 
})

或者您可以使用原生javascript map()

Quotes = data.map(function(v){
  return v[2]; 
})