我有一个非常简单的JavaScript对象,我将其用作关联数组。是否有一个简单的函数允许我获取值的键,或者我必须迭代对象并手动找到它?
当前回答
function extractKeyValue(obj, value) {
return Object.keys(obj)[Object.values(obj).indexOf(value)];
}
用于闭包编译器提取编译后未知的键名
更性感的版本,但使用未来对象。项功能
function objectKeyByValue (obj, val) {
return Object.entries(obj).find(i => i[1] === val);
}
其他回答
http://jsfiddle.net/rTazZ/2/
var a = new Array();
a.push({"1": "apple", "2": "banana"});
a.push({"3": "coconut", "4": "mango"});
GetIndexByValue(a, "coconut");
function GetIndexByValue(arrayName, value) {
var keyName = "";
var index = -1;
for (var i = 0; i < arrayName.length; i++) {
var obj = arrayName[i];
for (var key in obj) {
if (obj[key] == value) {
keyName = key;
index = i;
}
}
}
//console.log(index);
return index;
}
function extractKeyValue(obj, value) {
return Object.keys(obj)[Object.values(obj).indexOf(value)];
}
用于闭包编译器提取编译后未知的键名
更性感的版本,但使用未来对象。项功能
function objectKeyByValue (obj, val) {
return Object.entries(obj).find(i => i[1] === val);
}
或者,更简单的是—按您想要的顺序创建一个具有键和值的新对象,然后查找该对象。我们在使用上面的原型代码时发生了冲突。你不必在键周围使用String函数,那是可选的。
newLookUpObj = {};
$.each(oldLookUpObj,function(key,value){
newLookUpObj[value] = String(key);
});
没有看到以下内容:
Const obj = { id: 1、 名称:“窝” }; 函数getKeyByValue(obj, value) { 返回Object.entries (obj)。Find (([, name]) => value === name); } const [key] = getKeyByValue(obj, 'Den'); console.log(关键)
lodash way https://lodash.com/docs#findKey
Var用户= { 'barney':{'年龄':36,'活跃':true}, 'fred': {'age': 40, 'active': false}, '鹅卵石':{'年龄':1,'活动':true} }; _。findKey(users, {'age': 1, 'active': true}); //→'鹅卵石'