2017-10-31 6 views
1

hereとほぼ同じ問題が発生しましたが、私の問題はJSのRhinoのベアボーンの実装に委ねられています。ナンシーのように。2次元配列を小さなブロックまたはチャンクの配列にスライスします

Iは、(任意の量ダウン延びる)このようになり配列を有する:

[[ A, B, 1, 2, α, β], 
[ C, D, 3, 4, θ, μ], 
[ E, F, 5, 6, ω, ξ] 

Iが水平厚い「chunkified」配列Xの要素へ/スプライスをスライスしたいです。

[[[A, B],  [[1, 2],  [[α, β], 
    [C, D],  [3, 4],  [θ, μ], 
    [E, F]],  [5, 6]],  [ω, ξ]]] 

は、どのように私はこれについて行くことがありますのは、私は2つの要素の厚さのチャンクを必要としましょうか?

答えて

2

arr = [ [ 'A', 'B', 1, 2, 'α', 'β' ], 
 
     [ 'C', 'D', 3, 4, 'θ', 'μ' ], 
 
     [ 'E', 'F', 5, 6, 'ω', 'ξ' ] ], l = console.log, j = JSON.stringify 
 
     
 
l(j(arr[0].slice(2, 4)))   // "[1,2]" - slice can be used to get part of array 
 
l(j(arr.map(a => a.slice(2, 4)))) // "[[1,2],[3,4],[5,6]]" - map + slice to get part of each sub-array 
 

 
result = [0, 2, 4].map(i => arr.map(a => a.slice(i, i+2))) // map over the indexes to split by to get the parts 
 

 
l(j(arr)), l(j(result))

1

は、この方法を試してみてください:

var initialArray = [[ 'A', 'B', 1, 2, 'α','β'], 
 
        [ 'C', 'D', 3, 4, 'θ', 'μ'], 
 
        [ 'E', 'F', 5, 6, 'ω', 'ξ']]; 
 
    
 
function convertArray(array){ 
 
    \t var convertedArray = []; 
 
    
 
    var length = array.length; 
 
    \t for (var i = 0; i < length; i++){ 
 
    \t var rowArray = []; 
 
    var colArray = []; 
 
    var innerLength = array[i].length; 
 
    for (var j = 0; j < innerLength; j++){ 
 
    \t \t colArray.push(array[i][j]); 
 
     if ((j + 1) % 2 === 0){ 
 
      rowArray.push(colArray); 
 
      colArray = []; 
 
     } 
 
    \t 
 
    } \t 
 
    convertedArray.push(rowArray); 
 
    } 
 
    return convertedArray; 
 
} 
 
    
 
var newArray = convertArray(initialArray); 
 
console.log(newArray)

それは迅速なソリューションです。

関連する問題