Я хочу создать объект карты в javascript. Я пришел к следующей идее:
var a = new Array();
a["key1"] = "value1";
a["key2"] = "value2";
но тогда как я могу найти, существует ли какой-либо конкретный ключ?
Ответ 1
Не используйте массив, если вам нужны именованные ключи, используйте простой объект.
var a = {};
a["key1"] = "value1";
a["key2"] = "value2";
Тогда:
if ("key1" in a) {
// something
} else {
// something else
}
Ответ 2
Теперь в JavaScript доступен встроенный тип карты. Его можно использовать вместо простого использования Object. Он поддерживается текущими версиями всех основных браузеров.
Карты не поддерживают нотацию [subscript], используемую объектами. Этот синтаксис неявно передает значение subscript в примитивную строку или символ. Карты поддерживают любые значения в качестве ключей, поэтому вы должны использовать методы .get(key), .set(key, value) и .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.");
Ответ 3
Вы хотите создать объект, а не массив.
Таким образом,
var Map = {};
Map['key1'] = 'value1';
Map['key2'] = 'value2';
Вы можете проверить, существует ли ключ несколькими способами:
Map.hasOwnProperty(key);
Map[key] != undefined // For illustration // Edit, remove null check
if (key in Map) ...
Ответ 4
Используйте оператор in: например. "key1" in a.
Ответ 5
if( a['desiredKey'] !== undefined )
{
// it exists
}