无法遍历 javascript 中的数组数组 - 父数组有问题

not able to iterate through array of arrays in javascript - something wrong with parent array

我通过 api 调用创建了一个数组数组。父数组是 arrStories。当我在 console.log 中显示父数组时,它看起来像这样:

[]

当我单击 [] 旁边的小箭头时,我得到了所有子数组。他们每个看起来都像这样:

0: Array(4)
0: "08 Apr 2019"
1: "Avoiding those surprise bills when you stumble out of your insurance network"
2: "https://url"
3: "https://url-of-image"
length: 4
[[Prototype]]: Array(0)

当我尝试获取父数​​组的长度时,虽然:

console.log(arrStories.length); //returns 0

发生了什么事??

这是我填充数组的方式:

$.getJSON('my-api', function(data) {
  getStories(data); //push stories into an array of arrays
});

orderStories(arrStories); //order by date descending

function getStories(data) {
  for (var i = 0; i < data.articles.length; i++) {
    var pubDate = data.articles[i].publishedDate;
    pubDate = pubDate.slice(5);
    pubDate = pubDate.substring(0, pubDate.length - 15);
    arrStory.push(pubDate, data.articles[i].title, data.articles[i].link, data.articles[i].images[0].url); //push values into array
    arrStories.push(arrStory); //push array into parent array
    arrStory = []; //clear original array
  }
}

function orderStories(arrStories) {
  arrStories.sort(function(a, b) {
    var dateA = new Date(a.date),
      dateB = new Date(b.date)
    return dateA - dateB;
  });
}

您没有带 .date 的对象,您需要在 getJSON 函数中处理所有内容

你可能想要这个

function getStories(data) {
  return data.map(article => {
    var pubDate = data.articles[i].publishedDate;
    pubDate = pubDate.slice(5);
    pubDate = pubDate.substring(0, pubDate.length - 15);
    return {
      date: pubDate,
      title: article.title,
      link: article.link,
      imageUrl: article.images[0].url
    }
  })
}


function orderStories(arrStories) {
  arrStories.sort(function(a, b) {
    var dateA = new Date(a.date),
      dateB = new Date(b.date)
    return dateA - dateB;
  });
}
$.getJSON('my-api', function(data) {
  const arrStories = getStories(data)
  orderStories(arrStories)
  // here you can process arrStories
});

我认为这是你的 $.getJSON 回调发生的问题 你在下一行同步调用 orderStories 之后 - 我想你想要将 orderStories 放入 $.getJSON 回调

我认为您是在收到故事之前订购的

另一种方法看起来像这样

async function getData () {
  return new Promise(resolve =>  { $.getJSON('my-api', resolve) };
}

getData().then(data => {
  const stories = getStories(data);
  const orderedStories = getOrderedStories(stories);
});