#javascript
#javascript
Вопрос:
Я пытаюсь создать словарь в виде координат, которые возвращают цвета.
Я создал словарь с ключами в виде массива, например [0, 1]
. Однако я не могу получить значение, предоставив ключ.
dict = {
key: [0, 1],
value: "red"
}
dict[[0, 1]]
Я ожидал dict[[0, 1]]
присвоить значение «red», однако там просто написано «undefined».
Комментарии:
1.
dict
Является массивом объектов?2. Что именно вы ожидаете вернуть? Это очень сбивает с толку. И вы путаете значения свойств с ключами свойств
3. Вы уверены, что это JavaScript?
4. Я пытаюсь создать словарь в виде координат, которые возвращают цвета.
5. Нужно быть намного более конкретным, чем то, чего вы пытаетесь достичь
Ответ №1:
Для использования массива в качестве ключа вы могли бы использовать Map
с объектной ссылкой на массив в качестве ключа.
Этот подход не работает для похожего, но неравного массива.
var map = new Map,
key = [0, 1],
value = 'red';
map.set(key, value);
console.log(map.get(key)); // red
console.log(map.get([0, 1])); // undefined
Для получения набора координат вы могли бы использовать вложенный подход.
function setValue(hash, [x, y], value) {
hash[x] = hash[x] || {};
hash[x][y] = value;
}
function getValue(hash, keys) {
return keys.reduce((o, key) => (o || {})[key], hash);
}
var hash = {},
key = [0, 1],
value = 'red';
setValue(hash, key, value);
console.log(getValue(hash, key));
console.log(hash);
Или объединенный подход с разделителем значений.
var hash = {},
key = [0, 1].join('|'),
value = 'red';
hash[key] = value;
console.log(hash[key]);
console.log(hash);
Комментарии:
1. Спасибо, я использовал объединенный подход с разделителем