Вы можете использовать объект Map для этого, если обычный объект чувствует себя «странно».
const map = new Map()
map.set(25, 'Computers');
map.set(1, 'Food');
// then later
const computers = map.get(25);
// or loop over the map with
map.forEach((id, category) => {
console.log(id, category);
});
Быстрое обновление:
Как уже упоминалось, использование объектов с парами ключ = значениевсе в порядке.В конце концов, все в javascript является объектом (включая массивы)
Использование пар ключ-значение или Map имеет 1 большое преимущество (в некоторых случаях это имеет огромное значение), и это имеет «индексированный»структура данных.Вам не нужно искать весь массив, чтобы найти то, что вы ищете.
const a = data[id];
почти мгновенно, тогда как если вы ищете идентификатор в массиве объектов ... все зависит от вашего алгоритма поиска и размера массива.Использование «индексированного» объекта над массивом дает гораздо лучшую производительность, если иметь дело с большими массивами, которые постоянно обновляются / ищутся с помощью некоторой функции рендеринга.
Преимущество карты состоит в том, что она поддерживает порядок вставки ключей.пары значений, и он также перебирает только те свойства, которые вы установили.При зацикливании свойств объекта необходимо убедиться, что свойство принадлежит этому объекту и не «наследуется» через цепочку прототипов (hasOwnProperty)
m = new Map()
m.set(5, 'five');
m.set(1, 'one');
m.set(2, 'two');
// some other function altered the same object
m.__proto__.test = "test";
m.forEach((id, category) => {
console.log(id, category);
});
/*
outputs:
five 5
one 1
two 2
*/
o = {};
o[5] = 'five';
o[1] = 'one';
o[2] = 'two';
// something else in the code used the same object and added a new property
// which you are not aware of.
o.__proto__.someUnexpectedFunction = () => {}
for (key in o) {
console.log(key, o[key]);
}
/*
Output:
1 one
2 two
5 five
someUnexpectedFunction () => {}
*/
Карта и объекты также имеют 1 очень важное преимущество (иногда недостаток)- в зависимости от ваших потребностей).Карты / объекты / наборы гарантируют, что ваши проиндексированные значения являются уникальными.Это автоматически удалит все дубликаты из вашего набора результатов.С массивами вам нужно будет каждый раз проверять, есть ли элемент в массиве или нет.