Wenn sie zusammen mit Eigenschaften und Indizes, Sie sprechen über Objekte (die Eigenschaften) und Arrays (die Indizes haben).
Ihre erste Syntax: People[key1]
, impliziert, dass People
entweder ein Array, in dem key1
ist eine Variable eine nicht-negative Zahl Halten oder People
ist ein Objekt in dem key1
ein String ist, wie der Name einer Eigenschaft des dienen Objekt.
So könnten Sie haben:
var People = ["John","Paul","Ringo","George"];
var key1 = 3; // Arrays use non-negative numbers as indexes
console.log(People[key1]); // "George"
Oder könnten Sie haben:
var People = {
first:"John",
last: "Lennon"
}
var key1 = "first"; // Objects use strings as property names
console.log(People[key1]); // "John"
Wenn wir nun den Code weiter: People[key1][0]
, geben Sie an, dass key1
mit einer Nummer indiziert werden sollte, so dass People[key1]
ein Array zurückgeben soll.Dies würde bedeuten, dass People
könnte ein Array mit Arrays sein, oder ein Objekt mit Arrays als Eigenschaften:
Array mit verschachtelten Arrays:
var People = [
["John","Paul","Ringo","George"],
["Moe","Larry","Curly","Shemp"]
];
var key1 = 1;
console.log(People[key1][0]); // "Moe"
Objekt mit Arrays als Eigenschaftswert:
var People = {
Beatles: ["John","Paul","Ringo","George"],
ThreeStooges: ["Moe","Larry","Curly","Shemp"]
};
var key1 = "Beatles";
console.log(People[key1][0]); // "John"
Schließlich, wenn wir Ihre letzten Teile der Syntax hinzufügen: People[key1][0].FirstName
, können wir sehen, dass People[key1][0]
muss ein Objekt zurückgegeben werden, weil Sie einen Namen für den Zugriff bereitstellen, so dass die endgültige Struktur noch Array oder Objekte verwenden könnte, könnte aber aussehen wie diese:
Array mit verschachtelten Arrays, die Objekte enthalten, die Eigenschaften haben:
var People = [
[
{ firstName: "John" },
{ firstName: "Paul"} ,
{ firstName: "Ringo"} ,
{ firstName: "George"}
],
[
{ firstName:"Moe", lastName: "Stooge" },
{ firstName: "Larry", lastName: "Stooge" },
{ firstName: "Curly", lastName: "Stooge" },
{ firstName:"Shemp", lastName: "Stooge" }
]
];
var key1 = 1;
console.log(People[key1][0].firstName); // "Moe"
People[key1][0].firstName = "First-K2";
console.log(People[key1][0].firstName); // "First-K2"
Objekt mit Arrays als Eigenschaftswerte, die Objekte speichern, die Eigenschaften haben:
var People = {
Beatles: [
{ firstName: "John" },
{ firstName: "Paul"} ,
{ firstName: "Ringo"} ,
{ firstName: "George"}
],
ThreeStooges: [
{ firstName:"Moe", lastName: "Stooge" },
{ firstName: "Larry", lastName: "Stooge" },
{ firstName: "Curly", lastName: "Stooge" },
{ firstName:"Shemp", lastName: "Stooge" }
]
};
var key1 = "Beatles";
console.log(People[key1][0].firstName); // "John"
People[key1][0].firstName = "First-K2";
console.log(People[key1][0].firstName); // "First-K2"
Jetzt, während die Syntax zwei verschiedene Strukturen bedeuten könnte, dass beide arbeiten könnten, die Sie wirklich brauchen einige Zeit zu verbringen und denken darüber von innen nach außen. Sie scheinen Objekte mit einer firstName
Eigenschaft als das tiefste Konstrukt in Ihrer Struktur zu haben, aber von dort arbeiten Sie anscheinend nur Schichten ohne besonderen Grund. Sollen die Objekte mit firstName
Eigenschaften aufzählbar sein? Wenn ja, ist es sinnvoll, sie in einem Array zu haben. Aber warum sollte man sie weiter verpacken? Sie müssen sich entscheiden.
'Schlüssel1' ist eine Variable (als' Schlüssel2', Sie nennen es ...). Was ist der Wert davon? –
Meinst du 'var people = {" key1 ": {" Vorname: "First1-k1", "Nachname": "Last1-k1"}, "key2": {......}} 'then' people ["key1"] 'erhält FirstName und LastName von key1 oder' var families = {"fam1": [{"Vorname:" First1-k1 "," LastName ":" Last1-k1 "}, {" Vorname: "First1-k2", "LastName": "Last1-k2"}]} 'dann' people ["fam1"] [1] 'bekommt Vorname und Nachname von fam1 Nummer 1 – mplungjan
Ich muss eine Sammlung von Zeilen einfügen Leute [Schlüssel1] sowie Leute [Schlüssel2], Leute [Schlüssel3] ... usw. Vielleicht etwas wie: Leute [thekey] .FirstName [0], Leute [thekey] .FistName [1] .. usw. – Hawker