Книга: Выразительный JavaScript
Объекты как карты (map)
Объекты как карты (map)
Один из способов – хранить корреляции в массиве, используя объекты со свойствами name
и value
. Однако поиск корреляций в массиве будет довольно громоздким: нужно будет пройтись по всему массиву, чтобы найти объект с нужным именем. Можно было бы обернуть этот процесс в функцию, но код пришлось бы писать всё равно, и компьютер выполнял бы больше работы, чем необходимо.
Способ лучше – использовать свойства объектов с именами событий. Мы можем использовать квадратные скобки для создания и чтения свойств и оператор in
для проверки существования свойства.
var map = {};
function storePhi(event, phi) {
map[event] = phi;
}
storePhi("пицца", 0.069);
storePhi("тронул дерево", -0.081);
console.log("пицца" in map);
// ? true
console.log(map["тронул дерево"]);
// ? -0.081
Карта (map) – способ связать значения из одной области (в данном случае – названия событий) со значениями в другой (в нашем случае – коэффициенты ?).
С таким использованием объектов есть пара проблем – мы обсудим их в главе 6, но пока волноваться не будем.
Что, если нам надо собрать все события, для которых сохранены коэффициенты? Они не создают предсказуемую последовательность, как было бы в массиве, поэтому цикл for
использовать не получится. JavaScript предлагает конструкцию цикла специально для обхода всех свойств объекта. Она похожа на цикл for
, но использует команду in
.
for (var event in map)
console.log("Корреляция для '" + event
"' получается " + map[event]);
// ? Корреляция для 'пицца' получается 0.069
// ? Корреляция для 'тронул дерево' получается -0.081