访问此对象的名称

Access this object's name

本文关键字:对象 访问      更新时间:2023-09-26

我正在尝试"循环"一个对象,并在某个测试通过时获取名称。

例如

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

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

假设我被赋予了值"ss"....我正在尝试弄清楚如何让 Javascript 在给定适当值时输出"秒"。

以下情况也是如此

third for jp
third for jh
first for abc

等等。

一种可能性(其中 x 是你的对象,y 是你想要的数组值):

function foo(y) {
  for (key in x) {
    if (x[key].indexOf(y) > -1) {
      return key;
    }
  }
}

这将在其数组中找到具有您要搜索的值的第一个键

function myFunction(searchValue, myObject){
    for(var i in myObject){
        if(myObject.hasOwnProperty(i) && myObject[i].indexOf(searchValue) != -1){
            return i;
        }
    }
}
你知道

吗。 我一点击提交问题,我就意识到该怎么做。

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"
}

如果你想排除原型链中的属性,请使用hasOwnProperty函数:

  for (var property in obj) {
    if (obj.hasOwnProperty(property)) {
      console.log('property: ' + property + ' value: ' + obj[property]);
    }
  }

in 运算符将遍历原型链并返回对象中的所有属性。

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