循环使用嵌套数组的多维数组

时间:2016-05-20 11:25:44

标签: javascript arrays multidimensional-array nested

我有简单的JS(jquery)代码,我想通过所有三个嵌套数组运行 现在它只执行第一个嵌套数组([16,10,11]然后停止)。 我已经读过“for”循环可能有效,但我试过并失败了:[

任何人都有能力解决这个问题吗?我会很感激!

$(function(){ 
    var cat = [[16, 10, 11],[15, 10, 11],[36, 10, 11]];
    $('li#hcategory_' + cat[0][0] + ' ul.level2 > li:gt(' + cat[0][1] +')').hide();
      var l = $('li#hcategory_' + cat[0][0] + ' .level2 > li').length;
      if (l > cat[0][2]) {
          $('li#hcategory_' + cat[0][0] + 'span.show_more_button').show();
      } else {
          $('li#hcategory_' + cat[0][0] + 'span.show_more_button').hide();
      }
      $('li#hcategory_16 .show_more_button').click(function () {
        $('li#hcategory_' + cat[0][0] + ' ul.level2 > li:gt(' + cat[0][1] +')').show('slow');
    });
});

2 个答案:

答案 0 :(得分:0)

您可以使用Array#forEach()进行迭代。

  

forEach()方法每个数组元素执行一次提供的函数。

$(function () {
    var cat = [[16, 10, 11], [15, 10, 11], [36, 10, 11]];
    cat.forEach(function (c) {
        $('li#hcategory_' + c[0] + ' ul.level2 > li:gt(' + c[1] + ')').hide();
        var l = $('li#hcategory_' + c[0] + ' .level2 > li').length;
        if (l > c[2]) {
            $('li#hcategory_' + c[0] + 'span.show_more_button').show();
        } else {
            $('li#hcategory_' + c[0] + 'span.show_more_button').hide();
        }
        $('li#hcategory_16 .show_more_button').click(function () {
            $('li#hcategory_' + c[0] + ' ul.level2 > li:gt(' + c[1] + ')').show('slow');
        });
    });
});

答案 1 :(得分:0)

您可以首先对主数组使用双嵌套forEach()方法,对每个嵌套数组使用第二个方法,如:

var cat = [[16, 10, 11],[15, 10, 11],[36, 10, 11]];

 cat.forEach(function(v,i){
     //here v represents the values of the first level,
     //assuming it contains only arrays you can run a nested 
     console.log(v);
     v.forEach(function(vv, ii){
         // here you can access booth arrays respectively calling them
     console.log(v);
     conosole.log(vv);
     });
});