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

如何使用Lodash为对象数组匹配添加对应部门属性

使用Lodash实现对象属性映射

嘿,刚接触Lodash的话,用它来处理这种对象属性映射真的比手动循环清爽太多啦!针对你的需求,咱们可以用Lodash的工具函数轻松搞定,下面给你两种简单靠谱的写法:

方法一:结合_.map和_.get(推荐,容错性强)

这种方式能安全处理username在obj2中不存在的情况,还可以给缺失的部门设置默认值:

const obj_one = [
  { "username": "bob", "adminType": "facebook" },
  { "username": "tom", "adminType": "twitter" },
  { "username": "bob", "adminType": "twitter" }
];
const obj2 = {
  "bob": { "full_name": "Bob Something", "department": "Social Site" },
  "tom": { "full_name": "Tom Something", "department": "Networking Site" },
  "harry": { "full_name": "Harry something", "department": "Principal Engineering" }
};

const obj_result = _.map(obj_one, item => {
  // 用_.get安全获取department,不存在时返回默认值'Unknown'
  const department = _.get(obj2, `${item.username}.department`, 'Unknown');
  // 合并原对象属性和新的department
  return { ...item, department };
});

方法二:直接解构+属性访问(简洁版)

如果能确定obj_one里的所有username都在obj2中有对应数据,也可以用更简洁的写法:

const obj_result = _.map(obj_one, item => ({
  ...item,
  department: obj2[item.username].department
}));

代码逻辑说明

  • _.map:遍历obj_one数组,对每个元素执行回调函数,最终返回全新的结果数组,完美匹配咱们生成新数组的需求。
  • 对象扩展运算符...item:快速保留原对象的所有原有属性(username和adminType),不用手动逐个复制。
  • _.get:专门用来安全访问嵌套属性,就算某个username在obj2里找不到,也不会抛出报错,还能指定默认值,容错性拉满。

运行上面的代码后,就能得到你想要的obj_result啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:16:54