如何在JavaScript对象中根据指定值获取关联键?
解决方法:从随机值反向获取对象关联键
方案一:直接同时获取随机键值对(推荐,更高效)
不用先单独拿值再反向找键,直接随机选中键,同时拿到对应的键和值,避免二次遍历对象:
let characterJobList = { 'Jack': 'Fighter', 'Elaine': 'Healer', 'Swift': 'Spy', 'Teddy': 'Smith' } // 获取对象所有键的数组 const keys = Object.keys(characterJobList); // 生成随机索引选中一个键 const randomKey = keys[Math.floor(Math.random() * keys.length)]; // 通过键拿到对应的值 const randomValue = characterJobList[randomKey]; console.log(`随机角色:${randomKey},职业:${randomValue}`);
方案二:已有随机值时反向查找关联键
如果已经通过原有代码拿到了randomizeValues,可以通过遍历对象键的方式匹配对应的键:
let characterJobList = { 'Jack': 'Fighter', 'Elaine': 'Healer', 'Swift': 'Spy', 'Teddy': 'Smith' } const arrayLength = Object.keys(characterJobList).length const randomizeValues = characterJobList[Object.keys(characterJobList)[Math.floor(Math.random() * arrayLength)]] // 查找与随机值匹配的第一个键 const matchedKey = Object.keys(characterJobList).find(key => characterJobList[key] === randomizeValues); console.log(`随机职业:${randomizeValues},对应角色:${matchedKey}`);
注意事项
如果对象中存在多个相同的value,find方法只会返回第一个匹配的键。如果需要获取所有匹配的键,可以把find换成filter,得到一个包含所有匹配键的数组。
内容的提问来源于stack exchange,提问作者KiritoLyn
相关产品推荐
相关产品推荐

