Estoy tratando de iterar sobre el resultado de una matriz, pero no funciona. Cada resultado puede tener hasta 20 resultados. Lo obtengo tres veces, pero no puedo repetir cada uno de los 60 resultados
var responses = []; var url = "http://api.crossref.org/works?filter=prefix:10.5090,from-created-date:2020,until-created-date:2020"; async function doAjax(args) { const result = await $.ajax({ url: url, type: 'GET', data: args }); return result; } const stuff = doAjax('cursor=*').then((data) => { responses.push(data.message.items); var totalresults = data.message['total-results']; var cursor = 'cursor='+data.message['next-cursor']; if (totalresults > 20) { for (var i = 1; i <= 2; i++) { var selector = '' + i; selector = 'responses' + selector; selector = data.message.items; $.when(doAjax(cursor)).done(function(selector){ responses.push(selector.message.items); }) } } console.log(responses); $.each(responses, function(index,value){ console.log(value.DOI); // this line returns undefined }) });Dado que responses son una matriz de matrices , también tendrá que iterar cada submatriz antes de poder acceder a las propiedades individuales de sus elementos.
Además, no hay necesidad de usar $.each . Puedes simplemente usar array.forEach :
// demo data var responses = [ [{DOI: 0}, {DOI: 1}, {DOI: 2}], [{DOI: 3}, {DOI: 4}, {DOI: 5}], [{DOI: 6}, {DOI: 7}, {DOI: 8}] ]; responses.forEach(function(array) { array.forEach(function(value) { console.log(value.DOI); }); });