User 13204940 Ответов: 1

Эквивалент словаря/hashmap в javascript


Привет
Я создаю несколько
google.maps.Marker
экземпляры и каждый из них имеют свой идентификатор.

В VB.NET я бы создал словарь (строки, объекта) и искал маркер с помощью myDict (id) - что эквивалентно в JavaScript? Мне также нужно будет иметь возможность удалять пары id-маркер по идентификатору.

Спасибо

Что я уже пробовал:

Чтобы добавить и посмотреть вверх:

var markers = {};

markers[markers.length] = {id, new google.maps.Marker(...)};

var marker = markers[id];


Удалять:
var i;

found:
for(i = 0; i < markers.length; i++)
{
    if(markers[i] = id) // will definitely not work
    {
        markers.splice(i, 1);
        break found;
    }
}

1 Ответов

Рейтинг:
0

Richard Deeming

Ты уже близко:

var markers = {};

// To add or update:
markers[id] = new google.maps.Marker(...);

// To retrieve:
var marker = markers[id];

// To test whether the key exists:
var exists = markers.hasOwnProperty(id);

// To remove:
delete markers[id];

Работа с объектами-JavaScript | MDN[^]
Объект.прототип.метод hasOwnProperty() - JavaScript-кода | МДН[^]
оператор delete - JavaScript | MDN[^]


Richard Deeming

markers[id] = new {
    id: id, // Not required, but why not? :)
    marker: marker,
    boundary: null,
    listener: null
};

То markers это объект, а не массив. Вы не получаете доступ к элементам по индексу, и у вас нет length собственность.

(Если вам нужен length свойство, вам нужно будет добавить его к объекту и поддерживать его самостоятельно.)