以下是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
答案 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))