如何从Java脚本对象获取值的键?

时间:2019-03-16 03:23:50

标签: javascript arrays multidimensional-array

以下是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

3 个答案:

答案 0 :(得分: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而不是过滤器

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

答案 1 :(得分: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))

答案 2 :(得分: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))