在JavaScript中通过“值"动态获取“键" [英] Dynamically get 'Key' with 'Value' in javascript

查看:51
本文介绍了在JavaScript中通过“值"动态获取“键"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如

 let obj = {
    key1: ["A", "B", "C"],
    key2: ["D", "E"],
    key3: ["F"]
};

如果输入为"A",则应返回key1.针对不同的对象尝试使用以下代码.对于当前情况,还有更好的方法吗?`

If the Input is "A", it should return key1. Tried with the following code for different object. Any better way for current scenario? `

function findKey(value) {
    var element = null;
    Object.keys(obj).forEach(function(key) {
        if (obj[key].value === value.toString()) {
            element = key;
            return;
        }
    });
    return element;
}

`

推荐答案

使用 Array.prototype.includes .

let obj = {
  key1: ["A", "B", "C"],
  key2: ["D", "E"],
  key3: ["F"]
};

function findKey(value) {
  return Object.keys(obj).find(key => obj[key].includes(value));
}

console.log(findKey("A"));

另一个选择是将数据结构重组为 地图 以便快速访问:

Another option is to reorganize the data structure into a Map for quicker access:

let obj = {
  key1: ["A", "B", "C"],
  key2: ["D", "E"],
  key3: ["F"]
};

let map = new Map();

Object.keys(obj).forEach(key => {
  obj[key].forEach(value => {
    map.set(value, key);
  });
});

console.log(map.get("A"));

这篇关于在JavaScript中通过“值"动态获取“键"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆