我试图"循环"如果某个测试通过,则通过一个对象并获取名称。
例如
var x = {
'first':[
'ab',
'abc',
],
'second':[
'sia',
'sss'
],
'third':[
'jp',
'jh'
]
};
如您所见,我有一个包含数组的对象。
让我们说我得到了价值" sss" ....我想弄清楚如何让Javascript输出" second"当给出适当的值时。
以下情况也是如此
third for jp
third for jh
first for abc
等等。
答案 0 :(得分:1)
一种可能性(其中x是你的对象,y是你想要的数组值):
function foo(y) {
for (key in x) {
if (x[key].indexOf(y) > -1) {
return key;
}
}
}
答案 1 :(得分:1)
这将找到第一个具有您在其数组中搜索的值的键
function myFunction(searchValue, myObject){
for(var i in myObject){
if(myObject.hasOwnProperty(i) && myObject[i].indexOf(searchValue) != -1){
return i;
}
}
}
答案 2 :(得分:0)
你知道吗。我一点击提交问题,我就意识到该怎么做。
var x = {
'first':[
'ab','abc',
],
'second':[
'sia','sss'
],
'third':[
'jp','jh',
]
};
for(var arr in x) {
var theArr = x[arr];
if(theArr.indexOf("sss") !== -1) console.log(arr) // returns "second"
}
答案 3 :(得分:0)
如果要排除原型链中的属性,请使用hasOwnProperty函数:
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
console.log('property: ' + property + ' value: ' + obj[property]);
}
}
in运算符将遍历原型链并返回对象中的所有属性。
答案 4 :(得分:0)
var x = {
'first':[
'ab',
'abc',
],
'second':[
'sia',
'sss'
],
'third':[
'jp',
'jh'
]
};
var result = Object.keys(x).filter(function(key) {
return x[key].indexOf('sss') > -1;
});
之后,result
将是一个包含所有包含值sss
的键的数组,因此如果存在重复项,则可能为0,1或更多。