Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过多级阵列循环_Javascript_Jquery_Arrays_Loops_For Loop - Fatal编程技术网

Javascript 通过多级阵列循环

Javascript 通过多级阵列循环,javascript,jquery,arrays,loops,for-loop,Javascript,Jquery,Arrays,Loops,For Loop,我有一个多层次的数组,每个数组都是一个“天”,每天都有不同的事件(catalogo)catalogo是一个数组,其中包含当天将提供的食物。 我遇到的问题是试图在目录中显示数据 (4) [Array(7), Array(7), Array(7), Array(7)] 0: Array(7) 0: {fecha: 2019, id: 1553410800, mes: 3, catalogo: Array(1), …} 1: {fecha: 2019, id: 1553

我有一个多层次的数组,每个数组都是一个“天”,每天都有不同的事件(catalogo)catalogo是一个数组,其中包含当天将提供的食物。 我遇到的问题是试图在目录中显示数据

(4) [Array(7), Array(7), Array(7), Array(7)]
    0: Array(7)
      0: {fecha: 2019, id: 1553410800, mes: 3, catalogo: Array(1), …}
      1: {fecha: 2019, id: 1553410800, mes: 3, catalogo: Array(1), …}
      2: {fecha: 2019, id: 1553410800, mes: 3, catalogo: Array(1), …}
      3: {fecha: 2019, id: 1553410800, mes: 3, catalogo: Array(1), …}
      4: {fecha: 2019, id: 1553410800, mes: 3, catalogo: Array(1), …}
      5: {fecha: 2019, id: 1553410800, mes: 3, catalogo: Array(1), …}
      6:
        fecha: 2019
        id: 1553410800
        mes: 3
        catalogo: Array(2)
          0: {id: "1553929200", tipo: "food",…}
          1: {id: "1553995800", tipo: "food" …} 
    1: (7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
    2: (7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
    3: (7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
通过这样做,我可以循环到子数组,如何循环/访问catalogo中的数据

for ( var i = 0; i < data_array.length; i++ ) {
  var childArray = data_array[i];
  for( var j = 0; j < childArray.length; j++ ) { 
}
for(变量i=0;i
我尝试过这个,但不起作用:

for ( var i = 0; i < data_array.length; i++ ) {
  var childArray = data_array[i];
  for( var j = 0; j < childArray.length; j++ ) { 
    var third_Array = childArray[j];
    for ( var k = 0; k < third_Array.length; k++) { 
      console.log(third_Array);
    }
  }
}
for(变量i=0;i
没有实际数据很难测试,但请尝试以下方法:

const data = [Array(7), Array(7), Array(7), Array(7)]; // your data
data.forEach(day => {
    day.forEach(element => { 
        element.catalogo.forEach(c => { console.log(c); }))
    }
})

third\u Array
实际上不是数组。它是一个包含
catalogo
项目的对象,该项目是一个数组,因此您应该迭代
third\u Array.catalogo

我会怎么写:

 for(const weekPlan of data_array) {
   for(const dayPlan of weekPlan) {
     for(const dish of dayPlan.catalogo) {
       console.log(dish);
       //...
     }
   }
}
或者,如果您只对最低级别感兴趣:

 for(const dish of data_array.flat().flatMap(it => it.catalogo)) {
  //...
 }

您很接近,但是您缺少访问键
catalogo
。它应该看起来像:

for ( var i = 0; i < data_array.length; i++ ) {
  var childArray = data_array[i];
  for( var j = 0; j < childArray.length; j++ ) { 
    var third_Array = childArray[j].catalogo; // <-- This is missing
    for ( var k = 0; k < third_Array.length; k++) { 
      console.log(third_Array[k]);
    }
  }
}
for(变量i=0;ivar third_Array=childArray[j].catalogo;//根据您的数据结构,您需要遍历外部数组,然后遍历内部数组的每个元素,最后访问每个内部数组的
catalogo
属性并遍历该属性

我还将利用内置的
Array.prototype.forEach()
,简化语法

const数据=[
[
{
目录:[
{foo:'bar00'},
{foo:'bar01'}
]
},
{
目录:[
{foo:'bar02'},
{foo:'bar03'}
]
}
],
[
{
目录:[
{foo:'bar04'},
{foo:'bar05'}
]
},
{
目录:[
{foo:'bar06'},
{foo:'bar07'}
]
}
],
[
{
目录:[
{foo:'bar08'},
{foo:'bar09'}
]
},
{
目录:[
{foo:'bar10'},
{foo:'bar11'}
]
}
]
];
data.forEach(
(innerArray)=>innerArray.forEach(
(元素)=>element.catalogo.forEach(
(item)=>console.log(item.foo)
)
)

);
您似乎有一个嵌套了多个数组的数组 你可以这样解决你的问题 这里有一个例子

let array = [
[0, 1, 2],
[1, 2, 3],
[2, 3, 4]
]
let arrayLength = array.length;
for (let i = 0; i < arrayLength; i++) {
 let items = array[i].length;
 console.log(i, items)
 for (let n = 0; n < items; n++) {
  console.log(array[i][n]);
 }
}
let数组=[
[0, 1, 2],
[1, 2, 3],
[2, 3, 4]
]
设arrayLength=array.length;
for(设i=0;i
这是一个数组,您可以使用第一种方法,它应该可以工作。谢谢您的帮助,我在这方面遇到了困难