2017-04-03 9 views
0

皆、私は立ち往生しています。関数isGridは、twoDが各行の列数が同じである配列の配列である場合はtrueを返し、そうでない場合はfalseを返します。私はよ、私は2つの関数の長さを比較することになっていると思うが、私は与えられた配列のすべてのネストされた配列が同じ長さを持っている場合は、それを比較することによって、決定するためにArray#everyを使用することができJavascriptでの配列の配列

function isGrid(twoD) { 
     var isMatrix = true; 
     while(twoD.length!==isGrid) 
      isMatrix= false; 
    } 
     return isMatrix; 
    } 
+3

これは意味 'twoD.length!== isGrid'を持っていません! –

答えて

3

こだわっています例えば最初のネストされた配列ここで

var arr1 = [[1,2,3], [1,2,3]], 
 
    arr2 = [[1,2], [1,2,3]]; 
 
    
 
    function check(arr){ 
 
     return arr.every(v => v.length == arr[0].length); 
 
    } 
 
    
 
    console.log(check(arr1)); 
 
    console.log(check(arr2));

+0

'Array.isArray(arr)&& arr.every(v => Array.isArray(v)&& v.length == arr [0] .length)'オブジェクトが配列であることを確認することも価値があります。 – fqhv

0

例を進めています。私はあなたのコードを少しリファクタリングしました。純粋なjavascript、ないES6ヘルパー。

var example1 = [[1,2], [1,2], [1,2], [1,2], [1,2]], 
 
\t \t example2 = [[2,2], [1,1]], 
 
    example3 = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]; 
 
\t \t 
 
function isGrid(twoD) { 
 
    var isMatrix = true; 
 
    var arrayToCompare = twoD[0]; 
 

 
    // We start from second element in Array 
 
    for (i = 1; i < twoD.length; i++) { 
 
    var compareWith = twoD[i]; 
 

 
    for (j = 0; j < arrayToCompare.length; j++) { 
 
     var arrayToCompareElements = arrayToCompare[j]; 
 

 
     //console.log(arrayToCompareElements, compareWith[j]); 
 

 
     if (arrayToCompareElements !== compareWith[j]) { 
 
     isMatrix = false; 
 
     break; 
 
     } 
 
    } 
 

 

 
    arrayToCompare = compareWith; 
 
    } 
 

 
    return isMatrix; 
 
} 
 

 
console.log(isGrid(example1)); 
 
console.log(isGrid(example2)); 
 
console.log(isGrid(example3));