我想加入两个数组
const users = [{ user_id: 100, name: 'Bob' }, { user_id: 101, name: 'Joe' }]
const departments [{ id: 900, manager: 100 }, { id: 901, manager: 101 }]
我想通过将 user_id
属性与部门的 manager< 匹配来创建一个包含用户的
属性。 name
的新 departments
数组
在 lodash
(或纯 Javascript)中是否有一种简单的方法来实现这一点?
新数组看起来像这样
[{ id: 900, manager: 100, name: 'Bob' }, { id: 900, manager: 101, name: 'Joe' }];
感谢任何帮助!
最佳答案
您可以使用 Map 进行更快的查找,然后进行映射:
const users = [{ user_id: 100, name: 'Bob' }, { user_id: 101, name: 'Joe' }],
departments = [{ id: 900, manager: 100 }, { id: 901, manager: 101 }];
const names = new Map(users.map( user => [user.user_id, user.name] )),
res = departments.map( dep => Object.assign({ name: names.get(dep.manager) }, dep) );
console.log(res);
.as-console-wrapper { max-height: 100% !important; top: 0; }
请注意,创建 Map 的额外步骤将导致 O(n) 的时间效率,而不是在每个中使用数组搜索方法时的 O(n²)迭代。这与小型用户阵列无关,但在处理较大的阵列时会出现。
关于javascript - 在匹配的对象属性上连接两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361998/