Il modo migliore per memorizzare una chiave => valore array in JavaScript?

Qual è il modo migliore per archiviare una key=>value array di key=>value in javascript, e come può essere ripetuto?

La chiave di ogni elemento dovrebbe essere un tag, come {id} o solo id e il valore dovrebbe essere il valore numerico dell’ID.

Dovrebbe essere l’elemento di una class javascript esistente o essere una variabile globale che potrebbe essere facilmente referenziata attraverso la class.

jQuery può essere usato.

Questo è solo ciò che è un object JavaScript:

 var myArray = {id1: 100, id2: 200, "tag with spaces": 300}; myArray.id3 = 400; myArray["id4"] = 500; 

Puoi for..in loop usando for..in loop :

 for (var key in myArray) { console.log("key " + key + " has value " + myArray[key]); } 

Vedi anche: Lavorare con gli oggetti (MDN).

In ECMAScript6 c’è anche la Map (vedi la tabella di compatibilità del browser lì):

  • Un object ha un prototipo, quindi ci sono chiavi di default nella mappa. Questo potrebbe essere aggirato usando map = Object.create (null) da ES5, ma raramente è stato fatto.

  • Le chiavi di un object sono stringhe e simboli, dove possono essere qualsiasi valore per una mappa.

  • Puoi ottenere facilmente le dimensioni di una mappa mentre devi tenere traccia manualmente delle dimensioni di un object.

Se ti ho capito bene:

 var hash = {}; hash['bob'] = 123; hash['joe'] = 456; var sum = 0; for (var name in hash) { sum += hash[name]; } alert(sum); // 579 

In javascript un array di valori chiave viene memorizzato come object. Ci sono cose come gli array in javascript, ma sono anche in qualche modo considerati oggetti ancora, controlla questa risposta ragazzi – Qual è la differenza tra un array e un object?

Gli array vengono in genere visualizzati utilizzando la syntax della parentesi quadra e gli oggetti (array “chiave => valore”) utilizzando la syntax della parentesi graffa, sebbene sia ansible accedere e impostare le proprietà dell’object utilizzando la syntax della parentesi quadra mostrata da Alexey Romanov.

Gli array in javascript vengono in genere utilizzati solo con i tasti numerici e auto-incrementati, ma gli oggetti javascript possono contenere coppie di valori chiave, funzioni e persino altri oggetti.

Matrice semplice es.

 $(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); }); }); 

Produzione –

0 “Canada”

1 “Noi”

2 “Francia”

3 “Italia”

Vediamo sopra che possiamo fare il loop di un array numerico usando la funzione jQuery.each e accedere alle informazioni al di fuori del ciclo usando parentesi quadre con tasti numerici.

Oggetto semplice (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); }); }); 

Produzione –

Mi chiamo James e sono un programmatore da 6 piedi 1

nome James

programmatore di occupazione

altezza Oggetto {piedi: 6, pollici: 1}

In un linguaggio come PHP questo sarebbe considerato un array multidimensionale con coppie di valori chiave o una matrice all’interno di un array. Sto assumendo perché hai chiesto come passare attraverso un array di valori chiave che vorresti sapere come ottenere un object (chiave => array di valori) come l’object di persona sopra per avere, diciamo, più di una persona.

Bene, ora che sappiamo che gli array javascript sono usati tipicamente per l’indicizzazione numerica e gli oggetti in modo più flessibile per l’indicizzazione associativa, li useremo insieme per creare una serie di oggetti che possiamo scorrere, così via …

Array JSON (matrice di oggetti) –

 $(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"); }); }); 

Produzione –

Il mio nome è Joshua e io sono un amministratore delegato di 5 piedi 11

Mi chiamo James e sono un programmatore da 6 piedi 1

Mi chiamo Peter e sono un designer di 4 piedi

Il mio nome è Joshua e io sono un amministratore delegato di 5 piedi 11

Si noti che al di fuori del ciclo devo usare la syntax della parentesi quadra con una chiave numerica perché questa è ora una matrice indicizzata numericamente di oggetti, e ovviamente all’interno del ciclo è implicita la chiave numerica.

Puoi usare la mappa .

  • Una nuova struttura dati introdotta in JavaScript ES6.
  • Alternativa a JavaScript Oggetto per la memorizzazione di coppie chiave / valore.
  • Ha metodi utili per l’iterazione sulle coppie chiave / valore.
 var map = new Map(); map.set('name', 'John'); map.set('id', 11); // Get the full content of the Map console.log(map); // Map { 'name' => 'John', 'id' => 11 } 

Ottieni il valore della mappa usando la chiave

 console.log(map.get('name')); // John console.log(map.get('id')); // 11 

Ottieni dimensioni della mappa

 console.log(map.size); // 2 

La chiave di controllo esiste in Mappa

 console.log(map.has('name')); // true console.log(map.has('age')); // false 

Ottieni le chiavi

 console.log(map.keys()); // MapIterator { 'name', 'id' } 

Ottieni valori

 console.log(map.values()); // MapIterator { 'John', 11 } 

Ottieni elementi della mappa

 for (let element of map) { console.log(element); } // Output: // [ 'name', 'John' ] // [ 'id', 11 ] 

Stampa coppie di valori chiave

 for (let [key, value] of map) { console.log(key + " - " + value); } // Output: // name - John // id - 11 

Stampa solo le chiavi della mappa

 for (let key of map.keys()) { console.log(key); } // Output: // name // id 

Stampa solo i valori della mappa

 for (let value of map.values()) { console.log(value); } // Output: // John // 11 

So che è tardi, ma potrebbe essere utile per coloro che vogliono altri modi. Un altro modo in cui la chiave dell’array => i valori possono essere memorizzati è usando un metodo array chiamato map (); ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map ) puoi usare anche la funzione freccia

 var countries = ['Canada','Us','France','Italy']; 
// Arrow Function
countries.map((value, key) => key+ ' : ' + value );
// Anonomous Function
countries.map(function(value, key){
return key + " : " + value;
});