2017-04-03 59 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));