javascript - 如何将规范化 json 上的关系与 lodash 结合起来?
问题描述
所以我有两个对象数组,一个是人,另一个是这样的工作:
[
{
id: 1,
name: 'Daniel',
job: 146
},
{
id: 2,
name: 'Jose',
job: 163
}
]
和:
[
{
id: 146,
name: 'Developer'
},
{
id: 163,
name: 'DevOps'
}
]
我想获得一个人的数组,其中工作 id 被整个工作对象本身替换,如下所示:
[
{
id: 1,
name: 'Daniel',
job: {
id: 146,
name: 'Developer'
},
},
{
id: 2,
name: 'Jose',
job: {
id: 163,
name: 'DevOps'
}
}
]
也许 lodash 不是最好的方法,但我没有其他想法。如果可以,请提供帮助,谢谢。
解决方案
您可以从作业数组中创建一个查找表(即:对象),.reduce()
其中作业的 id 成为键,作业本身成为值。然后,您可以在.map()
您的人员数组中包含job
您之前创建的查找表中的值。
请参见下面的示例:
const people = [{id:1,name:"Daniel",job:146},{id:2,name:"Jose",job:163}];
const jobs = [{id:146,name:"Developer"},{id:163,name:"DevOps"}];
const lut = jobs.reduce((acc, job) => (acc[job.id] = job, acc), {});
const result = people.map(({job, ...person}) => ({...person, job: lut[job]}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- json - 是否可以在 JSON 查询中使用条件来进行颤振?
- python - 如何在此网格之间打印 a
- debugging - 是否可以使用 Goland Debugger 将切片/映射过滤为自定义值
- javascript - 在reactjs的嵌套html标签中获取目标值名称
- reactjs - Redux 从组件调度数据
- python - Cron 作业不会运行 python 脚本 - 即使经过两天的谷歌搜索
- autodesk-forge - 在 Forge 设计自动化和模型衍生 API 中生成图像的选项有哪些?
- php - MPDF 8忽略字体配置
- linux - sed:从匹配正则表达式的行中过滤字符串子集
- python - 在 python 中使用 DataFrame.apply 时如何访问以前的值?