如何从 javascript 对象中获取值的键? [复制]

Posted

技术标签:

【中文标题】如何从 javascript 对象中获取值的键? [复制]【英文标题】:How to get a key of a value from a java script Object? [duplicate] 【发布时间】:2019-08-07 03:44:02 【问题描述】:

下面是一个js对象的例子:

var arr =          

      "a1":  "0.25": 13, "0.5": 50,
      "a2":  "0.5": 50, "0.75": 113, "1": 202


id = 'a1';
key = "0.25";

function myFunc(id, key) 
  return arr[id][key];

使用上面的函数我可以得到对应键的值。

我的问题是如何获取给定值的密钥?

例如如果 id = 'a2' 且 value = 113,则函数应返回对应的键 0.75

【问题讨论】:

查看同一问题的答案:***.com/questions/9907419/… 需要注意的是,这不是一个多维数组。您的代码中没有数组。这是一个对象,其中每个键都是字符串,值是对象。数组将是 [1,2,3] 我同意它不是一个数组,而是一个对象。感谢您的纠正,感谢大家的帮助。 【参考方案1】:

使用Object.entries()Array#find

var arr ="a1":  "0.25": 13, "0.5": 50,"a2":  "0.5": 50, "0.75": 113, "1": 202

var a = 'a2',val = 113;

var Key = (a,val) =>  Object.entries(arr[a]).find(i=> i[1] == val)[0];

console.log(Key(a,val))

【讨论】:

旁注:- 值得一提的是 find 只会给出第一个匹配值的键。如果有多个匹配值,则不会返回所有键 @CodeManiac .Op 不提多重匹配【参考方案2】:

您可以先获取arr[a] 的密钥,然后根据value 过滤key

var arr ="a1":  "0.25": 13, "0.5": 50,"a2":  "0.5": 50, "0.75": 113, "1": 202

let a = 'a1',val = 13;

let getKey = (a,val) =>  Object.keys(arr[a]).filter(e => arr[a][e] === val)

console.log(getKey(a,val))
console.log(getKey('a2',113))

如果您确定总是有一个具有匹配值的键,或者您只想要第一个匹配值的键,那么您可以使用find 而不是过滤器

var arr ="a1":  "0.25": 13, "0.5": 50,"a2":  "0.5": 50, "0.75": 113, "1": 202

let a = 'a1',val = 13;

let getKey = (a,val) =>  Object.keys(arr[a]).find(e => arr[a][e] === val)

console.log(getKey(a,val))
console.log(getKey('a2',113))

【讨论】:

这是一个数组吗? @BhojendraRauniyar 因为我使用过滤器以防万一有多个键具有价值而不是我获取所有键 我的意思是 OP 调用数组的对象。您应该在答案中声明这不是数组。 @BhojendraRauniyar 哎呀,我以为第一个 sn-p 的输出在数组中:P OP 已经用正确的命名更新了他的问题【参考方案3】:

您可以使用Object.entries获取密钥

var arr = 
  "a1": 
    "0.25": 13,
    "0.5": 50
  ,
  "a2": 
    "0.5": 50,
    "0.75": 113,
    "1": 202
  


function myFunc(a, key) 
  var k = Object.entries(arr[a]).flat();
  return k[k.indexOf(key) - 1]

console.log(myFunc('a1', 13))

【讨论】:

以上是关于如何从 javascript 对象中获取值的键? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

从javascript中的键和字符串值获取objectId [重复]

如何从嵌套对象中获取具有值的所有键

如何根据对象数组中的键获取值javascript

python 中关于字典的键

JavaScript:检查对象数组中是不是存在重复的键值并删除所有但最近添加的具有该键值的对象

在javascript中找到地图中的键[重复]