访问此对象的名称

时间:2016-01-19 18:15:47

标签: javascript arrays object

我试图"循环"如果某个测试通过,则通过一个对象并获取名称。

例如

var x = {
 'first':[
        'ab',
        'abc',
 ],
 'second':[
        'sia',
        'sss'
 ],
 'third':[
        'jp',
        'jh'
 ]
};

如您所见,我有一个包含数组的对象。

让我们说我得到了价值" sss" ....我想弄清楚如何让Javascript输出" second"当给出适当的值时。

以下情况也是如此

third for jp
third for jh
first for abc

等等。

5 个答案:

答案 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或更多。