Was ist der beste Weg, um ein "key=> Wert"-Array in Javascript zu speichern, und wie kann das durchgeschleift werden?
Der Schlüssel jedes Elements sollte ein Tag sein, wie {id}
oder einfach id
und der Wert sollte der numerische Wert der id sein.
Es sollte entweder das Element einer bestehenden Javascript-Klasse sein, oder eine globale Variable, die leicht durch die Klasse referenziert werden könnte.
jQuery kann verwendet werden.
Das ist genau das, was ein JavaScript-Objekt ist:
var myArray = {id1: 100, id2: 200, "tag with spaces": 300};
myArray.id3 = 400;
myArray["id4"] = 500;
Sie können es in einer Schleife durchlaufen, indem Sie for..in
loop verwenden:
for (var key in myArray) {
console.log("key " + key + " has value " + myArray[key]);
}
Siehe auch: Arbeiten mit Objekten (MDN).
In ECMAScript6 gibt es auch Map
(siehe dort die Browser-Kompatibilitätstabelle):
- Ein Objekt hat einen Prototyp, also gibt es Standardschlüssel in der Map. Dies konnte seit ES5 mit map = Object.create(null) umgangen werden, wurde aber nur selten gemacht.
- Die Schlüssel eines Objects sind Strings und Symbole, wobei sie jeder Wert für eine Map sein können.
Sie können die Größe einer Map leicht ermitteln, während Sie die Größe eines Objekts manuell verfolgen müssen.
In javascript ein Schlüssel-Wert-Array ist als Objekt gespeichert. Es gibt solche Dinge wie Arrays in Javascript, aber sie sind auch etwas als Objekte noch, überprüfen Sie diese Jungs Antwort - https://stackoverflow.com/questions/874205/what-is-the-difference-between-an-array-and-an-object#answer-874237
Arrays sind in der Regel mit eckigen Klammern Syntax gesehen, und Objekte ("key=>value" Arrays) mit geschweiften Klammern Syntax, obwohl Sie zugreifen können und Objekt-Eigenschaften mit eckigen Klammern Syntax als Alexey Romanov hat gezeigt, gesetzt.
Arrays in Javascript sind in der Regel nur mit numerischen, automatisch inkrementiert Tasten verwendet, aber Javascript-Objekte können benannte Schlüssel-Wert-Paare, Funktionen und sogar andere Objekte als gut.
Einfache Array zB.
$(document).ready(function(){
var countries = ['Canada','Us','France','Italy'];
console.log('I am from '+countries[0]);
$.each(countries, function(key, value) {
console.log(key, value);
});
});
Ausgabe -
0 "Kanada"
1 "Wir"
2 "Frankreich"
3 "Italien"
Wir sehen oben, dass wir eine Schleife ein numerisches Array mit der jQuery.each-Funktion und Zugriff auf Informationen außerhalb der Schleife mit eckigen Klammern mit numerischen Tasten.
Einfaches Objekt (json)
$(document).ready(function(){
var person = {
name: "James",
occupation: "programmer",
height: {
feet: 6,
inches: 1
},
}
console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation);
$.each(person, function(key, value) {
console.log(key, value);
});
});
Ausgabe -
Mein Name ist James und ich bin ein 6 ft 1 Programmierer
Name James
Beruf Programmierer
Höhe Objekt {Fuß: 6, Zoll: 1}
In einer Sprache wie php würde dies als mehrdimensionales Array mit Schlüssel-Wert-Paaren oder als Array innerhalb eines Arrays betrachtet werden. Ich nehme an, weil Sie gefragt haben, wie man durch ein Schlüssel-Wert-Array schleifen kann, dass Sie wissen wollen, wie man ein Objekt (Schlüssel=>Wert-Array) wie das Person-Objekt oben erhält, um, sagen wir, mehr als eine Person zu haben.
Nun, da wir wissen, dass Javascript-Arrays typischerweise für numerische Indizierung und Objekte flexibler für assoziative Indizierung verwendet werden, werden wir sie zusammen verwenden, um ein Array von Objekten zu erstellen, das wir in einer Schleife durchlaufen können, wie zum Beispiel -
JSON-Array (Array von Objekten) -
$(document).ready(function(){
var people = [
{
name: "James",
occupation: "programmer",
height: {
feet: 6,
inches: 1
}
}, {
name: "Peter",
occupation: "designer",
height: {
feet: 4,
inches: 10
}
}, {
name: "Joshua",
occupation: "CEO",
height: {
feet: 5,
inches: 11
}
}
];
console.log("My name is "+people[2].name+" and I am a "+people[2].height.feet+" ft "+people[2].height.inches+" "+people[2].occupation+"\n");
$.each(people, function(key, person) {
console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation+"\n");
});
});
Ausgabe -
Mein Name ist Joshua und ich bin ein 5 ft 11 CEO
Mein Name ist James und ich bin ein 6 ft 1 Programmierer
Mein Name ist Peter und ich bin ein 4 ft 10 Designer
Mein Name ist Joshua und ich bin ein 5 ft 11 CEO
Beachten Sie, dass ich außerhalb der Schleife die Syntax der eckigen Klammern mit einem numerischen Schlüssel verwenden muss, da es sich jetzt um ein numerisch indiziertes Array von Objekten handelt, und natürlich ist der numerische Schlüssel innerhalb der Schleife impliziert.