web-dev-qa-db-fra.com

Comment créer un objet de hachage ou dictionnaire en JavaScript

Je veux créer un objet cartographique en javascript. Je suis venu à l'idée suivante:

 var a = new Array();
 a["key1"] = "value1";
 a["key2"] = "value2";

mais alors comment puis-je trouver si une clé particulière existe ou non?

163
Saurabh Kumar

N'utilisez pas un tableau si vous voulez des clés nommées, utilisez un objet brut.

var a = {};
a["key1"] = "value1";
a["key2"] = "value2";

Ensuite:

if ("key1" in a) {
   // something
} else {
   // something else 
}
266
Quentin

Un type de carte intégré est maintenant disponible en JavaScript. Il peut être utilisé au lieu d'utiliser simplement Object. Il est supporté par les versions actuelles de tous les principaux navigateurs.

Les cartes ne prennent pas en charge la notation [subscript] utilisée par Objects. Cette syntaxe transforme implicitement la valeur subscript en chaîne ou symbole primitif. Les cartes supportent toutes les valeurs en tant que clés, vous devez donc utiliser les méthodes .get(key), .set(key, value) et .has(key).

var m = new Map();
var key1 = 'key1';
var key2 = {};
var key3 = {};

m.set(key1, 'value1');
m.set(key2, 'value2');

console.assert(m.has(key2), "m should contain key2.");
console.assert(!m.has(key3), "m should not contain key3.");

Les objets ne prennent en charge que les chaînes et les symboles primitifs en tant que clés, car les valeurs sont stockées en tant que propriétés. Si vous utilisiez Object, il ne pourrait pas distinguer key2 et key3 car leurs représentations sous forme de chaîne seraient les mêmes:

var o = new Object();
var key1 = 'key1';
var key2 = {};
var key3 = {};

o[key1] = 'value1';
o[key2] = 'value2';

console.assert(o.hasOwnProperty(key2), "o should contain key2.");
console.assert(!o.hasOwnProperty(key3), "o should not contain key3."); // Fails!

Apparenté, relié, connexe

42
Jeremy Banks

Vous voulez créer un objet, pas un tableau.

Ainsi,

var Map = {};

Map['key1'] = 'value1';
Map['key2'] = 'value2';

Vous pouvez vérifier si la clé existe de plusieurs manières:

Map.hasOwnProperty(key);
Map[key] != undefined // For illustration // Edit, remove null check
if (key in Map) ...
38
Robert

Utilisez l'opérateur in: par ex. "key1" in a.

1
Howard
if( a['desiredKey'] !== undefined )
{
   // it exists
}
0
KOGI