{ foo: [ foo1: true ],
bar: [ bar1: true, bar2: true ],
foobar: [ foobar1: true ] }
这是一个值为array-like-objects
的对象。我想查找一个密钥是否存在,其值为[ bar1: true, bar2: true ]
。如果某个键与该值相关联,则返回该键。
我再说一遍,我正在搜索与对象中给出的值相关联的键。
答案 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()
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;
}
}
}