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

如何用Lodash/JS将对象数组中disease_type_id值映射到id键?

简洁高效的Lodash键映射实现方案

嘿,这个需求其实很容易搞定,而且有几种简洁又高效的方式能满足你的要求,同时保持代码的可读性:

1. 解构时直接重命名(最推荐)

这是最直观且代码量最少的写法,在解构原对象时直接把disease_type_id别名成id,然后返回新对象即可:

this.inspection.diseases = _.map(inspection.diseases, ({ disease_type_id: id, name }) => ({ id, name }));

这种写法完美承接了你原有的逻辑,既完成了指定键的提取,又实现了键名映射,可读性拉满,而且Lodash的map本身就是经过优化的高效实现,没有额外性能损耗。

2. 批量键映射方案(适合多键场景)

如果你之后可能需要对更多键进行重命名,不妨提前定义一个键映射规则,配合_.reduce批量处理,扩展性更强:

// 统一管理键映射规则
const keyMapping = {
  disease_type_id: 'id',
  name: 'name' // 不需要重命名的键也可以放在这里,方便统一维护
};

this.inspection.diseases = _.map(inspection.diseases, (item) => 
  _.reduce(keyMapping, (result, newKey, oldKey) => {
    result[newKey] = item[oldKey];
    return result;
  }, {})
);

这种方式虽然代码稍长,但后续修改或添加键映射时,只需要调整keyMapping对象即可,维护起来更省心。

额外:原生JS替代方案(无依赖版)

如果你之后考虑减少第三方依赖,原生JS的Array.map也能实现完全一样的效果,写法和Lodash版本几乎一致:

this.inspection.diseases = inspection.diseases.map(({ disease_type_id: id, name }) => ({ id, name }));

原生写法同样简洁高效,而且不需要额外引入库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:12:07