一般通过obj.key可以拿到value,那我要反过来,该怎么做?
参考一下,如果用 lodash 可以直接用 _.findKey
var data = {
a: 1,
b: 'string',
c: {},
d: {a: 98, b: 'str'}
}
function findKey (value, compare = (a, b) => a === b) {
return Object.keys(data).find(k => compare(data[k], value))
}
var val = data.b
findKey(val) // b
// 自定义比较函数,比如结合 lodash 可以
findKey({a: 98, b: 'str'}, _.isEqual) // d
var string1 = 'aabbbbcc';
mostChart(string1);
function mostChart(string) {
//建立空对象
var strObject = {};
//初始化对象
for (let i = 0; i < string1.length; i++) {
strObject[string1[i]] = 0; //对象的key值为字符串中的字符
}
//开始对元素进行计数
for (let i = 0; i < string1.length; i++) {
strObject[string1[i]]++;
}
//找出对象的value值中最大的
var max = 0;
for (let i in strObject) {
if (strObject[i] > max) {
max = strObject[i];
}
}
//根据对象的value值输出key值
for (let i in strObject) {
if (strObject[i] === max) {
console.log(i);
}
}
}
function findKeyByValue(obj, value) {
for(let key in obj) {
if (obj[key] === value) {
return key
}
}
return null
}
// test
let obj2 = {name: "cc", age:22, job: "teacher"}
findKeyByValue(obj2, 22)
10 回答11.4k 阅读
4 回答3.3k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
4 回答2k 阅读✓ 已解决
我有个笨方法
遍历对象,判断当前对象的 value 是否等于要查的值,如果匹配到输出key