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()
在找到匹配项时立即停止,因此,如果性能很重要,我会坚持使用后者

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)
添加回答
举报