检查某个密钥是否存在某些"值"存在于使用Javascript的对象中

时间:2014-10-01 17:35:27

标签: javascript json object key key-value

{ foo: [ foo1: true ],
  bar: [ bar1: true, bar2: true ],
  foobar: [ foobar1: true ] }

这是一个值为array-like-objects的对象。我想查找一个密钥是否存在,其值为[ bar1: true, bar2: true ]。如果某个键与该值相关联,则返回该键。

我再说一遍,我正在搜索与对象中给出的值相关联的键。

2 个答案:

答案 0 :(得分:0)

首先,这是正确的语法:

var map = {
  foo: { foo1: true },
  bar: { bar1: true, bar2: true },
  foobar: { foobar1: true }
};

现在查找它使用此功能:

function findKey(map, term) {
  var found = [];
  for(var property in map) {
    if(map.hasOwnProperty(property)) {
      for(var key in map[property]) {
        if(map[property].hasOwnProperty(key) && key === term) {
          found.push(property);
        }
      }
    }
  }
  return found;
}

例如:

var results = findKey(map, 'bar1');
console.log(results); 
// [ 'bar' ]

答案 1 :(得分:0)

您可以使用Array.prototype.slice.call()

将array-like-object转换为普通数组
function findKey(obj, key) {
    for (var prop in obj) {
        var arrLikeObj = obj[prop];
        var arr = Array.prototype.slice.call(arrLikeObj);
        if (arr.indexOf(key) != -1) {
            return prop;
        }
    }
}