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

如何使用Lodash将数组与字典对象键值合并为指定结构数组?

用Lodash实现数组与对象的合并转换

嘿,我来帮你搞定这个问题!你之前用_.zipObject失败的原因很直接:这个方法需要接收两个数组作为参数,但你传入的projects是一个对象,不是数组,完全匹配不上它的预期用法~

下面给你两种靠谱的Lodash实现方式,都能生成你想要的输出:

方法1:结合_.entries + _.map + _.zipObject

这种方式贴合你一开始想用_.zipObject的思路,先把对象转成键值对数组,再逐个转换:

var keys = ['Name','Id'];
var projects = { "project1": "11111", "project2": "22222", "project3": "33333" };

var output = _.map(_.entries(projects), (pair) => {
  return _.zipObject(keys, pair);
});

原理说明:

  1. _.entries(projects)会把你的对象转换成二维键值对数组:[["project1", "11111"], ["project2", "22222"], ["project3", "33333"]]
  2. _.map遍历这个二维数组,对每一组["projectX", "XXXX"]执行回调
  3. _.zipObject(keys, pair)会把keys数组的元素作为键,pair数组的元素作为值,生成目标对象:{ Name: "project1", Id: "11111" }

方法2:直接在_.map中构造对象

如果觉得上面的步骤有点绕,也可以直接在遍历对象时手动构造目标对象,可读性更强:

var keys = ['Name','Id'];
var projects = { "project1": "11111", "project2": "22222", "project3": "33333" };

var output = _.map(projects, (value, key) => ({
  [keys[0]]: key,
  [keys[1]]: value
}));

原理说明:

_.map遍历对象时,回调函数的参数顺序是(value, key),所以我们直接把key(比如project1)赋值给keys[0]对应的Name属性,把value(比如11111)赋值给keys[1]对应的Id属性即可。

两种方法最终都会生成你想要的输出:

[
  { Name:"project1", Id:"11111"},
  { Name:"project2", Id:"22222"},
  { Name:"project3", Id:"33333"}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:22:23