2016-10-24 1 views
1

Ich möchte etwas entlang der Linien von array1.length aus der unteren Reihe:Wie kann ich die Größe eines Arrays überprüfen, das Sub-Arrays enthält?

var array1 = { 
sub1: [1,2,3], 
sub2: ["K","J","H"], 
sub3: ["Mango","Armada","Leffen","Mew2king"], 
sub4: ['1/8"', '3/16"', '1/4"'], 
}; 

Im Moment bin ich die folgenden Ausgaben bekommen:

console.log(array1) //Object {sub1: Array[3], sub2: Array[3]...} 
console.log(array1.length) //undefined 
console.log(array1[1]) //undefined 
console.log(array1[1].length //Cannot read property 'length' of undefined 

Wo ich falsch gehe?

+0

Sie definieren kein Array, sondern ein Objekt. array1.length gibt Ihnen eine Länge von einem der Arrays – Coss

+2

'Object.keys (array1) .length' da' array1' kein Array ist – gurvinder372

+0

@ gurvinder372 Danke, das hat funktioniert, was ich wollte. Ist es möglich ein Array mit Sub-Arrays zu definieren? –

Antwort

1

Array1 ist nicht ein Array, ist ein Objekt. sub1 usw. Arrays sind, dann können Sie:

array1.sub1.length; // returns 3 
1

Sie haben eine Object, kein Array.

Sie können über die Schlüssel iterieren und erhalten die Länge der Arrays innerhalb des Objekts.

var object = { sub1: [1, 2, 3], sub2: ["K", "J", "H"], sub3: ["Mango", "Armada", "Leffen", "Mew2king"], sub4: ['1/8"', '3/16"', '1/4"'] }; 
 
Object.keys(object).forEach(function (key) { 
 
    console.log(object[key].length); 
 
});

+1

Aber Object.keys wird nicht in IE8 und darunter, Opera und FF 3.6 und darunter unterstützt. – Sankar

+0

können Sie die Schleife ['for ... in'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in) mit einem Häkchen für [ 'hasOwnProperty'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty) –

0

Try this ...

var array1 = { 
 
    sub1: [1, 2, 3], 
 
    sub2: ["K", "J", "H"], 
 
    sub3: ["Mango", "Armada", "Leffen", "Mew2king"], 
 
    sub4: ['1/8"', '3/16"', '1/4"'], 
 
}; 
 

 
console.log(array1.sub1.length,array1.sub2.length,array1.sub3.length,array1.sub4.length);

-1

array1 ist ein JSON-Objekt. So

array1.subArray.length

sollte funktionieren

+0

Leider ist es (' array1') ein Objekt. – Sankar

+0

@SankarRaj Das ist was ich gesagt habe. 'array1' ist ein Objekt. Verstehe die Down-Abstimmung nicht. –

0

Sie immer so etwas tun könnte:

var array1 = [[1,2,3],["K","J","H"],["Mango","Armada","Leffen","Mew2king"], 
['1/8"', '3/16"', '1/4"']]; 
var flatArray = [].concat.apply([],array1) 

Dieses das Array abflachen wird, so dass Sie Länge usw. verwenden können

0

Converting JSON Object into Javascript array Siehe

var array1 = { 
 
sub1: [1,2,3], 
 
sub2: ["K","J","H"], 
 
sub3: ["Mango","Armada","Leffen","Mew2king"], 
 
sub4: ['1/8"', '3/16"', '1/4"'], 
 
}; 
 
alert("Size : "+Object.keys(array1).map(function(k) { return array1[k] }).length);

OUTPUT

Größe: 4

ES ARBEITET

auf ein Array die Schlüssel konvertieren und dann die Werte mit Array.map Abbilden zurück Dann , kann die Länge dieses Arrays erhalten. Gutes Spiel, gut gespielt.

Hinweis: Sie können am Anfang auch eine Var erstellen und sie dann für alle Ihre Prozesse verwenden.

Verwandte Themen