Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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_Search_Key Value - Fatal编程技术网

Javascript 如何在数组中也有值的对象中搜索值?

Javascript 如何在数组中也有值的对象中搜索值?,javascript,arrays,object,search,key-value,Javascript,Arrays,Object,Search,Key Value,我有一个对象如下 FOO: { BAR: [9,32,8,12 ], ZET: 4, BETA: [3,14,6,2], ALPHA: 37 }, 我需要搜索此对象的值以将值与键匹配。有大量的示例提供了具有单数值的键,但我找不到任何能够在数组中搜索值的示例 我怎样才能搜索FOO对象的所有值并与键匹配 注:目的;我将寻找一个输入,如果给定的输入是2,那么期望得到密钥BETA,或者如果给定的输入是4,那么ZET 因此,基本上,

我有一个对象如下

FOO: {
        BAR: [9,32,8,12 ],
        ZET: 4,
        BETA: [3,14,6,2],
        ALPHA: 37
    },
我需要搜索此对象的值以将值与键匹配。有大量的示例提供了具有单数值的键,但我找不到任何能够在数组中搜索值的示例

我怎样才能搜索FOO对象的所有值并与键匹配

注:目的;我将寻找一个输入,如果给定的输入是2,那么期望得到密钥BETA,或者如果给定的输入是4,那么ZET


因此,基本上,这些值已经是一些预定义的唯一值了。

类似的东西应该可以工作:

//我们在找什么 FOO={ 酒吧:[9,32,8,12], 泽特:4, 贝塔系数:[3,14,6,2], 阿尔法:37 }; 函数findValue findValue,obj{ return Object.entriesFOO .filter[key,value]=>value==findValue | | Array.isArrayvalue&&value.includeFindValue .map[键,值]=>键; } 函数testfindValuevalue,obj{ console.logtestfindValue:\nInput:+value,结果:,FindValue,obj; } TestFindValue 4,FOO; testfindValue6,FOO; testfindValue32,FOO;
testfindValue99,FOO 像这样的方法应该会奏效:

//我们在找什么 FOO={ 酒吧:[9,32,8,12], 泽特:4, 贝塔系数:[3,14,6,2], 阿尔法:37 }; 函数findValue findValue,obj{ return Object.entriesFOO .filter[key,value]=>value==findValue | | Array.isArrayvalue&&value.includeFindValue .map[键,值]=>键; } 函数testfindValuevalue,obj{ console.logtestfindValue:\nInput:+value,结果:,FindValue,obj; } TestFindValue 4,FOO; testfindValue6,FOO; testfindValue32,FOO;
testfindValue99,FOO 您可以使用一个简单的for…in循环和.concAT以及.includes数组方法:

设obj={ 酒吧:[9,32,8,12], 泽特:4, 贝塔系数:[3,14,6,2], 阿尔法:37 }; 设定位器=o,v=>{ 对于o中的var prop{ if[].concato[prop].includesv{ 返回道具; } } } console.loglocatorobj,2;
console.loglocatorobj,4 您可以使用一个简单的for…in循环和.concAT以及.includes数组方法:

设obj={ 酒吧:[9,32,8,12], 泽特:4, 贝塔系数:[3,14,6,2], 阿尔法:37 }; 设定位器=o,v=>{ 对于o中的var prop{ if[].concato[prop].includesv{ 返回道具; } } } console.loglocatorobj,2;
console.loglocatorobj,4 您可以简单地在对象中循环并搜索值以标识键。如果找到多个匹配项,将返回与结果匹配的键数组

函数objSearchkey,obj{ 常量键=[]; 对于obj中的let项{ 如果obj.hasOwnPropertyitem{ 如果obj[item]==key | | Array.isArrayobj[item]&&obj[item].indexOfkey>-1{ 按键。按键项; } } } 返回键; } 常量对象={ 傅:{ 酒吧:[9,32,8,12], 泽特:4, 贝塔:[3,14,6,2], 阿尔法:37 } }; const res1=objSearch14,obj.FOO;//存在 const res2=objSearch15,obj.FOO;//不存在 const res3=objSearch37,obj.FOO;//存在 console.logres1; console.logres2;
console.logres3 您可以简单地在对象中循环并搜索值以标识键。如果找到多个匹配项,将返回与结果匹配的键数组

函数objSearchkey,obj{ 常量键=[]; 对于obj中的let项{ 如果obj.hasOwnPropertyitem{ 如果obj[item]==key | | Array.isArrayobj[item]&&obj[item].indexOfkey>-1{ 按键。按键项; } } } 返回键; } 常量对象={ 傅:{ 酒吧:[9,32,8,12], 泽特:4, 贝塔:[3,14,6,2], 阿尔法:37 } }; const res1=objSearch14,obj.FOO;//存在 const res2=objSearch15,obj.FOO;//不存在 const res3=objSearch37,obj.FOO;//存在 console.logres1; console.logres2; console.logres3 试试这个片段

我正在检查对象值的条件,无论是其数组还是值,以及根据该条件应用的条件。我还保持了父密钥的动态性

var abc={ 傅:{ 酒吧:[9,32,8,12], 泽特:4, 贝塔:[3,14,6,2], 阿尔法:37 }, DAB:{ DBAR:[9,32,8,12], DZET:4, 德贝塔:[3,14,6,2], 达尔法:37 }, }; 函数retTitleabc,父函数,k{ var title=; $.eachabc[parent],functionx,y{ 如果Array.isArrayy&&y.indexOfk!=-1 | |!Array.isArrayy&&y==k{ title=x; 回来 } }; 返回标题; } var title=retTitleabc,'DAB',4; console.logtitle 试试这个片段

我正在检查对象值的条件,无论是其数组还是值,以及根据该条件应用的条件。我还保持了父密钥的动态性

var abc={ 傅:{ 酒吧:[9,32,8,12], 泽特:4, 贝塔:[3,14,6,2], 阿尔法:37 }, DAB:{ DBAR:[9,32,8,12], DZET:4, 德贝塔:[3,14,6,2], 达尔法:37 }, }; 函数retTitleabc,父函数,k{ var title=; $.eachabc[parent],functionx,y{ if Array.isArra yy&&y.indexOfk!=-1 || !Array.isArrayy&&y==k{ title=x; 回来 } }; 返回标题; } var title=retTitleabc,'DAB',4; console.logtitle 您可以使用一个简单的for…in循环来迭代键。然后检查该值是否为数字,是否等于您要查找的值。如果它不是一个数字,那么它就是一个数组-因此,请检查此数组是否包含您要查找的数字。 变量FOO={ 酒吧:[9,32,8,12], 泽特:4, 贝塔系数:[3,14,6,2], 阿尔法:37 }; 函数findKeyByValueobj,val{ 对于FOO中的var i{ 如果!obj.hasownproperty i继续; 如果FOO[i]的类型为'number'{ ifFOO[i]==val返回i; }否则{ ifFOO[i]。包含返回值i; } } } console.logfindKeyByValueFOO,4 您可以使用一个简单的for…in循环来迭代键。然后检查该值是否为数字,是否等于您要查找的值。如果它不是一个数字,那么它就是一个数组-因此,请检查此数组是否包含您要查找的数字。 变量FOO={ 酒吧:[9,32,8,12], 泽特:4, 贝塔系数:[3,14,6,2], 阿尔法:37 }; 函数findKeyByValueobj,val{ 对于FOO中的var i{ 如果!obj.hasownproperty i继续; 如果FOO[i]的类型为'number'{ ifFOO[i]==val返回i; }否则{ ifFOO[i]。包含返回值i; } } }
console.logfindKeyByValueFOO,4 您可以获取键,创建一个值数组并检查includes。返回找到的密钥

函数findobject,value{ 返回对象 .KeyObject .findk=>[].concatobject[k].includeValue; } var object={FOO:{BAR:[9,32,8,12],ZET:4,BETA:[3,14,6,2],ALPHA:37}; console.logfindobject.FOO,4;
console.logfindobject.FOO,8 您可以获取键,创建一个值数组并检查includes。返回找到的密钥

函数findobject,value{ 返回对象 .KeyObject .findk=>[].concatobject[k].includeValue; } var object={FOO:{BAR:[9,32,8,12],ZET:4,BETA:[3,14,6,2],ALPHA:37}; console.logfindobject.FOO,4;
console.logfindobject.FOO,8;请添加您正在寻找的值、结果和您尝试过的内容。我将根据不同的输入提供值。所以目标是如果给定的输入是2,那么期望得到密钥BETA,或者如果给定的输入是4,那么ZET…如果一个值既独立又在数组中存在呢?@MohammadUsman我更新了帖子,不会有任何重复的值。这些数字在FOO中是唯一的吗?一个数字可以包含在多个数组中吗?请添加您要查找的值、结果和您尝试的内容。我将根据不同的输入提供值。所以目标是如果给定的输入是2,那么期望得到密钥BETA,或者如果给定的输入是4,那么ZET…如果一个值既独立又在数组中存在呢?@MohammadUsman我更新了帖子,不会有任何重复的值。这些数字在FOO中是唯一的吗?一个数字可以包含在多个数组中吗?这就是我使用这个数组的基本方向。这就是我使用这个alsoDear@TerryLennox的基本方向。你的代码片段工作得很完美,但我仍然使用@MohammedUsman的解决方案,同时我必须定义哪个obj。应该考虑FUNDY值的返回语句,但是Usman的解决方案可以与任何Objo一起工作。谢谢你的努力。太好了,很高兴看到你找到了解决办法!亲爱的@TerryLennox,你的代码片段工作得很完美,但我还是会使用@MohammedUsman的解决方案,同时我还要定义哪个obj。应该考虑FUNDY值的返回语句,但是Usman的解决方案可以与任何Objo一起工作。谢谢你的努力。太好了,很高兴看到你找到了解决办法!亲爱的@MohammadUsman感谢您的解决方案,它在所有全球obj中都有非常好的使用。亲爱的@MohammadUsman感谢您的解决方案,它在所有全球obj中都有非常好的使用。这对我的目标非常有效。