2017-04-03 56 views
0

大家好,我被卡住了。如果twoD是數組數組,並且每行的列數相同,則函數isGrid返回true,否則返回false。我想我應該比較兩個職能的長度,但我堅持Javascript中的數組數組

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

這是沒有意義'twoD.length!== isGrid'! –

回答

3

您可以通過它來確定使用Array#every,以確定是否給定數組的每一個嵌套數組具有相同的長度例如第一個嵌套數組。

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));