Как создать хеш-объект или словарь в JavaScript

Я хочу создать объект карты в 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
}