You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组中与对象键完全匹配的元素替换为对应键值?

问题修正:数组元素与对象键完全匹配时替换为对应值

问题分析

当前代码的问题出在matchedKey函数中:你用Object.keys(Obj).map遍历对象的所有键,这会返回一个数组,导致外层Arr.map将原数组的每个元素都转换成数组,最终得到二维结果,不符合预期。

我们需要的逻辑是:对数组中的每个元素,判断它是否是对象的键,是则替换为对应值,否则保留原元素。

修正后的代码

function test() {
  let Arr = [ 'Saturday', 'niCCCght', 'plans,', 'CCC' ];
  const Obj = {"AAA":"BBB", "CCC":"DDD","EEE":"FFF"};
  
  const Z = Arr.map(v => matchedKey(Obj, v))
  console.log(Z); // 输出:[ 'Saturday', 'niCCCght', 'plans,', 'DDD' ]
}

let matchedKey = (Obj, str) => Obj.hasOwnProperty(str) ? Obj[str] : str;

关键修改说明

  • 替换matchedKey的实现逻辑:用Obj.hasOwnProperty(str)检查当前字符串是否是对象的自有键(避免原型链上的键干扰)
  • 匹配成功时返回对应的值Obj[str],否则返回原字符串str
  • 这样matchedKey返回单个值,外层Arr.map处理后得到一维数组,完全符合期望输出

内容的提问来源于stack exchange,提问作者Einarr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:04:55