[アルゴリズム]チャンクアレイ

// ---行き方
//配列とチャンクサイズを考えると、多くのサブアレイにアレイを分割し
、各サブアレイが長さサイズのものである//
// ---例
//チャンク([1、2、3、4] 2) - > [[1、2]、[3、4]
//チャンク([1、2、3、4、5]、2) - > [[1、2]、[3、4 ]、[5]]
//チャンク([1、2、3、4、5、6、7、8]、3) - > [[1、2、3]、[4、5、6]、 [7、8]
//チャンク([1、2、3、4、5]、4) - > [[1、2、3、4]、[5]]
//チャンク([1、2 、3、4、5]、10) - > [[1、2、3、4、5]

 

関数チャンク(配列サイズ){ 
  結果を聞かせ = []; 
  一時を聞かせて = [];
  constの LEN = Array.lengthと。
  (; iがLEN <I ++は、I = 0せ{)
    MODせ = Iの%の大きさと、
    もし(MOD === 0 ){
       場合(temp.length == 0] ){ 
        結果 = [...結果、TEMP]。
      } 
      TEMP = []; 
    } 

    TEMP [MOD] = 配列[i]は、
  } 

  結果 = [...結果、TEMP]。

  戻り値の結果;
}

 

方法2:

関数チャンク(配列サイズ){ 
  せチャンク = []; 
  聞かせてインデックス = 0 ; 

  一方、(指数< Array.lengthと){ 
    chunked.push(array.slice(インデックス、インデックス + サイズ))。
    インデックス + = サイズ; 
  } 

  戻りチャンク。
}

 

テスト:

CONSTチャンクは=( "./インデックス"を必要とします)。

試験( "機能チャンクが存在する"、()=> { 
  期待(typeof演算チャンク).toEqual( "機能" ); 
}); 

テスト(()=> "チャンクがチャンクサイズ2を有する10個の要素のアレイ分割" {
   CONST ARR = [1、2、3、4、5、6、7、8、9、10 ]、
   CONSTはチャンク=チャンクを(ARR、2 ); 

  期待(チャンク).toEqual([ 1、2]、[3、4]、[5、6]、[7]、[8]、[9、10 ]]); 
}); 

試験( "チャンクはチャンクサイズ1を有する3個の素子のアレイを分割"、()=> {
   CONST ARR = [1、2、3 ]、
   CONSTチャンク=チャンク(ARR、1 )。

  期待(チャンク).toEqual([ 1]、[2]、[3 ])。
}); 

試験( "チャンクはチャンクサイズ3で5個の素子のアレイを分割"、()=> {
   CONST ARR = [1、2、3、4、5 ]、
   CONSTはチャンク=チャンクを(ARR、3 ); 

  (チャンク期待) .toEqual([[ 1、2、3]、[4、5 ]); 
}); 

試験( "チャンクは、チャンクサイズ5と13個の素子のアレイを分割"()=> {
   CONST ARR = [1、2、3、4、5、6、7、8、9、10、11、12、13 ];
   constがチャンク=チャンクを(ARR、5 ); 

  期待(チャンク).toEqual([1、2、3、4、5]、[6、7、8、9、10]、[11、12、13 ])。
});

 

おすすめ

転載: www.cnblogs.com/Answer1215/p/10960776.html