给定集合(
users
在下面的代码片段中)包含子集合和另一个集合(
organizations
)其中包含我需要合并到的子集合中的属性
用户
,最有效的方法是什么?
下面的代码可以工作,但是嵌套迭代对我来说从来没有那么好的感觉。此外,生产环境有成百上千个结果,因此至少要考虑性能。
仅供参考,我正在利用
lodash
图书馆,我知道会从
不
不过,我希望有人能提供一种更有效的方法来解决这个问题。
下面的代码查找组织的名称,然后将该名称添加到
用户
用于应用程序其他部分的数组。
(数据结构来自API,不能更改。)
// organizations are actually fetched from an API via Observable. Can change at any time.
const organizations = [{
organization_id: 5,
organization_name: 'Sample 1'
},
{
organization_id: 6,
organization_name: 'Sample 2'
},
{
organization_id: 9,
organization_name: 'Sample 3'
},
// etc...
];
// users are actually fetched from an API via Observable. Can change at any time.
const users = [{
user_name: 'User 1',
organizations: [{
organization_id: 9,
organization_role: 'Limited'
},
{
organization_id: 6,
organization_role: 'Admin'
}
]
},
{
user_name: 'User 2',
organizations: [{
organization_id: 5,
organization_role: 'Limited'
},
{
organization_id: 6,
organization_role: 'Limited'
}
]
},
// etc...
];
document.addEventListener('DOMContentLoaded', () => {
_.forEach(users, (user) => {
_.forEach(user.organizations, (organization) => {
organization.organization_name = _.get(_.find(organizations, ['organization_id', organization.organization_id]), 'organization_name', '?');
});
});
console.log(users);
}, false);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>