javascript - 从键值对中的值获取键

标签 javascript

我有这样的东西:

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/

相关文章:

javascript - 无法让 Jasmine 测试成功调用注入(inject)的服务

javascript - 为什么正向lookbehinds被捕获作为javascript中正则表达式匹配的一部分?

javascript - 我想根据 select 中的值更改 css 中给出的表格的背景颜色

javascript - 如何在 javascript 中将变量附加(连接)到常量

javascript - 在 React 中使用 Grid 时 Material UI 错误

c# - 无法在 Visual Studio 2012 中编译 TypeScript 文件

javascript - 添加行后如何避免下拉重复[AngularJS]

javascript - 使用 JS 进行表单检查 : select at least one checkbox and max 2 checkboxes

javascript - 禁用/启用右键单击 html 正文的特定部分

javascript - 防止浏览器缓存上传图片