在JS对象中按值查找键

时间:2014-12-17 08:06:42

标签: javascript arrays

我有以下代码:

var search_value = 'XYZ';
var FIELD_MAP = {
    'key1': [
        'SOME',
        'THING'
    ],
    'key2': [
        'ANOTHER_VALUE',
        'XYZ'
    ]
};

我需要找到哪个数组(key1,key2等)有一个存储在变量search_value中的值。这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

您可以通过过滤FIELD_MAP对象上的键来检查该值是否包含search_value,方法是使用Object.keys来获取密钥,Array.filter来过滤它们。

var key = Object.keys(FIELD_MAP).filter(function(k){
    return ~FIELD_MAP[k].indexOf(search_value);
})[0]; // remove the [0] if you want multiple keys matching the criteria

答案 1 :(得分:1)

这可以通过迭代FIELD_MAP的属性并检查所需的搜索字符串是否可用来实现:

for (var key in FIELD_MAP) {
  if (FIELD_MAP.hasOwnProperty(key)) {

    if (FIELD_MAP[key].indexOf(search_value) > 0) {
      console.log("Found in=",key)
    }
  }
}