这个问题在这里已有答案:
以下是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
使用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))
您可以使用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))
您可以先获取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))