代码之家  ›  专栏  ›  技术社区  ›  Mona Coder

利用循环从多维数组中获取数据

  •  1
  • Mona Coder  · 技术社区  · 6 年前

    我试图找出为什么我不能每3秒分别获取每个项目数组的单个值。

    如您所见,我正在获取整个数组值,而不是单独获取它们。我需要它得到什么,然后单独和控制台日志结束每一级数组

    var imgs = [
      [
        ['#fff', '#eee'],
        ['#117A65', '#E74C3C'],
        ['#F39C12', '#AF7AC5']
      ],
      [
        ['#7B241C  ', '#eee'],
        ['#117A65', '#909497  ']
      ],
      [
        ['#17A589', '#626567']
      ],
      [
        ['#5499C7', '#eee'],
        ['#117A65', '#884EA0']
      ],
    ];
    for (let i = 0; i < imgs.length; i++) {
      for (let j = 0; j < imgs[i].length; j++) {
        for (let b = 0; b < imgs[j].length; b++) {
          (function(index) {
            setTimeout(function() {
              console.log(imgs[i][j][b]);
            }, i * 3000);
          })(i);
        }
      }
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    1 回复  |  直到 6 年前
        1
  •  3
  •   Jack Bashford    6 年前

    只是 flat 数组并使用一个循环:

    var imgs=[[['#fff','#eee'],['#117A65','#E74C3C'],['#F39C12','#AF7AC5']],[['#7B241C  ','#eee'],['#117A65','#909497  ']],[['#17A589','#626567']],[['#5499C7','#eee'],['#117A65','#884EA0']]];
    
    const flattened = imgs.flat(2);
    
    for (let i = 0; i < flattened.length; i++) {
      console.log(flattened[i]);
    }
    .as-console-wrapper { max-height: 100% !important; top: auto; }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    如果您需要在每个第一级迭代之后执行某些操作,则应该使用经典的 for 循环:

    var imgs=[[['#fff','#eee'],['#117A65','#E74C3C'],['#F39C12','#AF7AC5']],[['#7B241C  ','#eee'],['#117A65','#909497  ']],[['#17A589','#626567']],[['#5499C7','#eee'],['#117A65','#884EA0']]];
    
    for (let i = 0; i < imgs.length; i++) {
      for (let j = 0; j < imgs[i].length; j++) {
        for (let k = 0; k < imgs[i][j].length; k++) {
          console.log(imgs[i][j][k]);
        }
      }
      console.log("First level iteration complete - callback here!");
    }
    。作为控制台包装{最大高度:100%!重要;顶部:auto;}
    <script src=“https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js”></script>