Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JS中查找对象上特定值的键_Javascript_Arrays_Object_Lodash - Fatal编程技术网

Javascript 在JS中查找对象上特定值的键

Javascript 在JS中查找对象上特定值的键,javascript,arrays,object,lodash,Javascript,Arrays,Object,Lodash,我有一个这样的对象,它是通过使用lodash..zipObject()函数生成的。我有两个数组,一个位置,一个数字 var locs = {'Aberdeen': 304, 'Aberystwith': 109, 'Belfast': 219, 'Birmingham': 24, 'Brighton': 147, …} 我需要根据输入值返回键。例如,函数(304)将返回'Aberdeen' 我试过\uu.findkey(locs,304)但这只是返回未定义的。我尝试过的任何其他尝试总是返回未定

我有一个这样的对象,它是通过使用lodash
..zipObject()
函数生成的。我有两个数组,一个位置,一个数字

var locs = {'Aberdeen': 304, 'Aberystwith': 109, 'Belfast': 219, 'Birmingham': 24, 'Brighton': 147, …}
我需要根据输入值返回键。例如,
函数(304)
将返回
'Aberdeen'

我试过
\uu.findkey(locs,304)但这只是返回未定义的。我尝试过的任何其他尝试总是返回未定义或-1。不太确定从这里走到哪里。

使用纯Javascript函数获取所有键,然后与函数中的元素进行比较

const obj={'Aberdeen':304,'Aberystwith':109,'Belfast':219,'Birmingham':24,'Brighton':147};
const key=Object.keys(obj.find)(key=>obj[key]==304);

控制台日志(键)要查找键,请使用谓词函数:

var locs={'Aberdeen':304,'Aberystwith':109,'Belfast':219,'Birmingham':24,'Brighton':147};
变量键=uu.findKey(locs,函数(v){
返回v==304;
});
控制台日志(键)

您可以使用自定义功能查找密钥:

function findKey(dataObj, value){

    for(var key in dataObj){
        if(dataObj.hasOwnProperty(key) && dataObj[key] == value){
            return key;
        }
    }

    return false;

}

var locs = {'Aberdeen': 304, 'Aberystwith': 109, 'Belfast': 219, 'Birmingham': 24, 'Brighton': 147, …}

console.log(findKey(locs, 304));

您只需使用Object.keys()获取所有键,然后使用.find()函数从该数组中取出键,然后将其巧妙地包装到一个函数中,使其模块化

var locs = {'Aberdeen': 304, 'Aberystwith': 109, 'Belfast': 219, 'Birmingham': 24, 'Brighton': 147, …}    
Object.prototype.getKey = function(value) {    
  var object = this;    
  return Object.keys(object).find(key => object[key] === value);    
};    
alert(locs.getKey(304));

你可以这样做:

var locs={'Aberdeen':304,'Aberystwith':109,'Belfast':219,'Birmingham':24,'Brighton':147}
常量getKeyByValue=(对象,值)=>
Object.keys(obj.find)(key=>obj[key]==value);
日志(getKeyByValue(locs,304))