2017-04-03 6 views
0

jeder, ich stecke fest. Die Funktion isGrid gibt true zurück, wenn twoD ein Array von Arrays ist, in dem jede Zeile die gleiche Anzahl von Spalten hat, andernfalls wird false zurückgegeben. Ich bin der Meinung, ich soll die Länge von zwei der Funktionen vergleichen, aber ich bin festArray von Arrays in Javascript

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

Dies ist hat keinen Sinn 'twoD.length! == isGrid'! –

Antwort

3

Sie Array#every verwenden könnten, um zu bestimmen, ob jedes verschachteltes Array von gegebener Array die gleiche Länge hat durch einen Vergleich mit z.B das erste verschachtelte Array.

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)' Überprüfen, ob die Objekte Arrays sind, kann sich ebenfalls lohnen. – fqhv

0

Hier arbeitet Beispiel. Ich habe deinen Code ein wenig überarbeitet. Reines Javascript, keine ES6-Helfer.

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