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?
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
}
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!
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) ...
Utilisez l'opérateur in
: par ex. "key1" in a
.
if( a['desiredKey'] !== undefined )
{
// it exists
}