2010-09-30 5 views
17

У меня есть текстовое поле автозаполнения, которое пользователи могут вводить в код элемента и нужно выяснить, что номер идентификатора этого кода в javascript.Эффективный синтаксис для заполнения ассоциативного массива javascript

Ассоциативный массив так, как я предположил бы, что это должно быть сделано, но следующий, кажется, немного долго наматывается, и я надеюсь, что кто-то есть лучший способ сделать это или сокращенную того, что у меня есть ниже:

var itemIds = new Array(); 
itemIds["item1"] = 15; 
itemIds["item2"] = 40; 
itemIds["item3"] = 72; 
... 

function getItemId(code){ 
    return itemIds[code]; 
} 
+1

Не нужно объявлять 'itemIds' как объект Array. В конце концов вы просто добавляете свойства к объекту. Поскольку объект JavaScript можно рассматривать как «контейнер для пар ключ-значение», любой объект JavaScript будет работать. – smwikipedia

ответ

21

Что вы делаете, это не массив - это объект (объекты в JavaScript являются эквивалентными ассоциативными массивами в PHP).

Вы можете использовать JavaScript объект буквальный синтаксис:

var itemIds = { 
    item1: 15, 
    item2: 40, 
    item3: 72 
}; 

JavaScript члены объекта могут быть доступны через точечную нотацию или индекс массива, например, так:

itemIds.item1; 
itemIds['item1']; 

Вы должны будете использовать второй если у вас есть имя участника как строка.

+0

Ничего себе, это отличный ответ, спасибо за предоставленные примеры. – Jake

2

Попробуйте использовать литерал объекта обозначения, чтобы указать свой поиск так:

var itemIds = { 
    "item1" : 15, 
    "item2" : 40 
    ... 
}; 

доступа должно работать так:

var item1Value = itemIds["item1"]; 
+2

Arg ... Я не был достаточно быстрым. – some

+1

Технически, JSON - это использование JavaScript-объектов и литералов массива для обмена данными - то, что вы показываете, является литералом объекта. – Skilldrick

+0

О, я предположил из бита «Обозначение» в названии, что он определил синтаксис. Объект Literal это! –

Смежные вопросы