我有这样的东西:
var input = [];
var result = {};
input.push({
key: 1,
value: Value
});
result[input[0].key] = input[0].value;
如果我想从键中获取值,我调用result[key]
,但是如果我想从某个值获取键怎么办?有什么想法吗?
最佳答案
您可以创建值→键的逆映射;但是,不能保证值是唯一的(而键必须是唯一的),因此您可以映射值 → 键数组。
function inverseMap(obj) {
return Object.keys(obj).reduce(function(memo, key) {
var val = obj[key];
if (!memo[val]) { memo[val] = []; }
memo[val].push(key);
return memo;
}, {});
}
var a = {foo:'x', bar:'x', zip:'y'};
var b = inverseMap(a); // => {"x":["foo","bar"],"y":["zip"]}
[更新]如果您的值绝对是唯一的,那么您可以简单地执行以下操作:
function inverseMap(obj) {
return Object.keys(obj).reduce(function(memo, key) {
memo[obj[key]] = key;
return memo;
}, {});
}
inverseMap({a:1, b:2})); // => {"1":"a","2":"b"}
当然,这些解决方案假设值是字符串表示有意义的对象(非复杂对象),因为 JavaScript 对象只能使用字符串作为键。
关于javascript - 从键值对中的值获取键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17093213/