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

根据映射对象更新数组:替换finalArr的REQUEST_TYPE为对应数值

解决对象数组属性值按映射替换的问题

需求

有一个对象数组finalArr和映射对象replaceJsonData,当replaceJsonData中存在add:1的映射规则时,将finalArr里元素的REQUEST_TYPE值替换为1。

初始数据

finalArr = [{
  REQUEST_TYPE: 'add',
  TIMESTAMP: '1671636661867',
}, ]

let replaceJsonData = {
  "REQUEST_TYPE": {
    'add': 1,
    'modify': 2
  }
}

问题代码

之前尝试的写法错误地直接将整个映射对象赋值给属性,没有根据元素当前的属性值匹配对应映射:

finalArr.map((ele)=>{
    Object.entries(replaceJsonData ).forEach(
        ([replaceDataKey, replaceDataValue]) => {
          if (ele[replaceDataKey]) {
            ele[replaceDataKey]=replaceDataValue
         }
       }
     )
});

正确解法

通用版(支持多属性映射)

遍历数组元素,针对每个属性对应的映射表,用元素当前的属性值作为键去匹配映射值:

finalArr.forEach(ele => {
  Object.entries(replaceJsonData).forEach(([propName, valueMap]) => {
    if (ele[propName] in valueMap) {
      ele[propName] = valueMap[ele[propName]];
    }
  });
});

简化版(仅处理REQUEST_TYPE)

如果只需要处理REQUEST_TYPE这一个属性,可以直接定位到对应的映射表:

finalArr.forEach(ele => {
  const typeMap = replaceJsonData.REQUEST_TYPE;
  if (typeMap.hasOwnProperty(ele.REQUEST_TYPE)) {
    ele.REQUEST_TYPE = typeMap[ele.REQUEST_TYPE];
  }
});

执行后结果

finalArr = [{
  REQUEST_TYPE: 1,
  TIMESTAMP: '1671636661867',
}, ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:50:43