Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

150
Views
no se puede iterar a través de una matriz de matrices en javascript: algo está mal con la matriz principal

Creé una matriz de matrices a partir de una llamada de API. La matriz principal es arrStories. Cuando muestro la matriz principal en console.log, se ve así:

 []

Cuando hago clic en la pequeña flecha junto a [] , obtengo todas las matrices secundarias. Cada uno se parece a esto:

 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)

Sin embargo, cuando trato de obtener la longitud de la matriz principal:

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

¿¿Lo que ha sucedido??

Así es como llené mis arreglos:

 $.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; }); }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

No tiene un objeto con .date y necesita procesar todo dentro de la función getJSON

Es probable que quieras esto

 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 });
about 4 years ago · Juan Pablo Isaza Report

0

Creo que es un problema de su devolución de llamada $.getJSON después de llamar sincrónicamente a orderStories en la siguiente línea. Creo que desea poner orderStories en la devolución de llamada $.getJSON

Creo que estás ordenando las historias antes de recibirlas.

Otro enfoque podría ser algo como esto

 async function getData () { return new Promise(resolve => { $.getJSON('my-api', resolve) }; } getData().then(data => { const stories = getStories(data); const orderedStories = getOrderedStories(stories); });
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!