2016-05-20 10 views
1

私は単純なJS(jquery)コードを持っています。これを実行するには、ネストされた3つの配列すべてを通してを実行します。 今すぐは最初のネストされた配列([16,10,11])を実行してからを停止します。 私は "for"ループがうまくいくかもしれないと読んだことがありますが、試して失敗しました:[ネストされた配列を持つ多次元配列をループする

any1はこの問題を解決できますか?私は感謝するでしょう!

$(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'); 
    }); 
}); 

答えて

0

反復にはArray#forEach()を使用できます。

forEach()メソッドは、配列要素ごとに1つの関数を実行します。

$(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'); 
     }); 
    }); 
}); 
+0

ありがとうございました!それは素晴らしい作品です。 私はちょうど10行目を $( 'li#hcategory_' + c [0] + '.show_more_button')に変更しなければなりませんでした。(function(){ "16"そこから :) –

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); 
    }); 
}); 
関連する問題