JS如何检测一个对象的value等于另一对象的key并获取对应值
解决方案
你之前的代码无法运行是因为直接将整个AnswerString对象作为键值去M2060中检索,正确逻辑需要遍历AnswerString的每个属性值单独匹配。你提到的Object.entries结合map的方案可以实现需求,具体代码如下:
// 方案1:生成新对象,不修改原有AnswerString(推荐) const result = Object.fromEntries( Object.entries(AnswerString).map(([key, val]) => { // 匹配到对应键就取数组第一个元素,未匹配到保留原值(可按需调整兜底逻辑) return [key, M2060[val]?.[0] ?? val] }) ) // 方案2:直接修改原AnswerString对象 for (const key in AnswerString) { const matchKey = AnswerString[key] if (M2060.hasOwnProperty(matchKey)) { AnswerString[key] = M2060[matchKey][0] } }
以上两种方案都可以得到你需要的输出结果,方案1里的?.和??是ES2020的可选链与空值合并运算符,需要兼容旧运行环境可以替换成普通的if判断逻辑。
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

