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

问题描述 投票:0回答:3

这个问题在这里已有答案:

以下是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'且值= 113,则该函数应返回相应的密钥0.75

javascript arrays multidimensional-array
3个回答
0
投票

使用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))

1
投票

您可以使用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))

1
投票

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

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而不是filter

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))
© www.soinside.com 2019 - 2024. All rights reserved.