如果键是数组,如何找到键的值?

时间:2019-04-06 16:08:06

标签: javascript

我正在尝试将字典作为返回颜色的坐标。

我制作了一个以键为数组的字典,例如[0, 1]。但是,我无法通过提供密钥来获得价值。

dict = {
  key:   [0, 1],
  value: "red"
}

dict[[0, 1]]

我希望dict[[0, 1]]给出的值是“红色”,但是它只是说“未定义”。

1 个答案:

答案 0 :(得分:4)

要使用数组作为键,您可以使用Map,并将对象引用以tha数组作为键。

这种方法不适用于相似但不相等的数组。

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);