为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据传递的值从对象中查找键值

如何根据传递的值从对象中查找键值

忽然笑 2021-05-14 18:19:07
我在JavaScript中有以下对象:{  "key1":"value1,value2,value3",  "key2":"value4,value5,value6"} 现在,我想解析一个特定的值,如果该值存在,我想返回与其关联的键。假设我传递的是'value3',它应该返回key1;如果通过了value5,它应该还给我key2,依此类推。在记住执行时间的同时,使用Java来实现它的最佳方法是什么。我一直在使用像刺痛处理函数尝试indexOf,substr; 但我认为不是最有效的。
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

对我来说,最快,最简洁的方法是将源对象与目标对象组合Array.prototype.find()String.prototype.includes()抛出:

const src={"key1":"value1,value2,value3","key2":"value4,value5,value6"};


const getAkey = (obj, val) => (Object.entries(obj).find(entry => entry[1].split(',').includes(val)) || ['no match'])[0];


console.log(getAkey(src, 'value1'));

console.log(getAkey(src, 'value19'));

ps while filter(),or或reduce()orforEach()将遍历整个数组,find()在找到匹配项时立即停止,因此,如果性能很重要,我会坚持使用后者


查看完整回答
反对 回复 2021-05-27
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您可以尝试遍历对象中的每个值,然后在每个逗号上拆分该值,然后检查该值是否在返回的数组中,如下所示:


const myObj = {"key1":"value1,value2,value3","key2":"value4,value5,value6"}

 


function findKeyByValue(obj, value) {

    for (var key in myObj) {

        const valuesArray = myObj[key].split(',')

        if (valuesArray.includes(value)) {

            return key

        }

    }

}


const key = findKeyByValue(myObj, 'value5') // returns 'key2'

console.log(key)


查看完整回答
反对 回复 2021-05-27
  • 3 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信