Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问此对象的名称_Javascript_Arrays_Object - Fatal编程技术网

Javascript 访问此对象的名称

Javascript 访问此对象的名称,javascript,arrays,object,Javascript,Arrays,Object,如果某个测试通过,我将尝试循环一个对象并获取其名称 比如说 var x = { 'first':[ 'ab', 'abc', ], 'second':[ 'sia', 'sss' ], 'third':[ 'jp', 'jh' ] }; 如您所见,我有一个包含数组的对象 假设我得到了sss的值。。。。我正试图弄清楚,当给定适当的值时,如何让Javascript第二次输出 以下场景也是如此

如果某个测试通过,我将尝试循环一个对象并获取其名称

比如说

var x = {
 'first':[
        'ab',
        'abc',
 ],
 'second':[
        'sia',
        'sss'
 ],
 'third':[
        'jp',
        'jh'
 ]
};
如您所见,我有一个包含数组的对象

假设我得到了sss的值。。。。我正试图弄清楚,当给定适当的值时,如何让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;
    }
  }
}

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

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

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

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

如果要排除原型链中的属性,请使用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;
});

之后,结果将是一个数组,其中包含包含值sss的所有键,因此如果存在重复项,它可以是0、1或更多。

您需要对对象使用递归函数,并在到达属性/值时返回深度计数器,这非常简单,你有没有尝试过任何不起作用的方法?快速谷歌搜索给我至少20个可行的点击,回答了你的问题。虽然这个论坛是为了提供答案-你需要先自己搜索答案。这里有一个小推-只要看看的呵呵!我喜欢有无数种方法可以解决这个问题,我们都在10秒内想出了完全相同的方法