使用 .push() 将 JSON 中的数据添加到数组时的未定义值

Undefined value when adding data from JSON to array using .push()

我正在从 this API 获取 JSON 数据。我的代码如下所示:

function setup() {
   noLoop();
   //Enable cross-origin request
  let CO = 'https://cors-anywhere.herokuapp.com/';
   //API link
  let source = 'http://hitchwiki.org/maps/api/?continent=AF';
  let url = CO + source;
  loadJSON(url, insertInToArray);
}

function insertInToArray(data) {
   var ids = [];
   var count = Object.keys(data).length;
  for(let i = 0; i < count; i++) {
        let cod = data[i].id;
        ids[i].push(cod);
  }
     console.log(ids);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.js"></script>

打开控制台时出现错误“未捕获(承诺)类型错误:无法读取未定义的 属性 'push'”。显然在所有 ID 之前都有一个未定义的值,但我真的不知道如何修复它。

感谢您的帮助!

我总是使用 asyncawait 来处理我的 JSON 请求。

async function insertInToArray(data) {
    ...
    var count = await Object.keys(data).length;
    ...

ids[i] = cod 而不是 ids[i].push(cod).

function setup() {
  noLoop();
  //Enable cross-origin request
  let CO = 'https://cors-anywhere.herokuapp.com/';
  //API link
  let source = 'http://hitchwiki.org/maps/api/?continent=AF';
  let url = CO + source;
  loadJSON(url, insertInToArray);
}

function insertInToArray(data) {
  var ids = [];
  var count = Object.keys(data).length;
  for (let i = 0; i < count; i++) {
    let cod = data[i].id;
    ids[i] = cod;
  }
  console.log(ids);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.js"></script>

数据是一个数组,因此您可以使用地图:

function insertInToArray(data) {
  var ids = data.map(
    function(item){ return item.id; }
  )
  console.log(ids);
}