我有两个数组。一个是包含名字的字符串数组
let companies = ['Google', 'Coca Cola,' 'Jonson & Jonson',];
另一个数组包含的对象
let employees = [
{name: 'Alina' company: 'Google', id : 1},
{name: 'Vika' company: 'Coca Cola', id : 2},
{name: 'Alex' company: 'Jonson & Jonson', id : 3},
{name: 'Vlad' company: 'Google', id : 4},
{name: 'Fibi' company: 'Coca Cola', id : 5},
{name: 'Joey' company: 'Google', id : 6},
]
我的任务是把这些人按名字分组
const groups = [
{'Google': [
{name: 'Alina' company: 'Google', id : 1},
{name: 'Vlad' company: 'Google', id : 4},
]},
'Jonson & Jonso': [
{name: 'Alex' company: 'Jonson & Jonson', id : 3},
]},
...
]
也许有人知道如何做到这一点最简单的方法,而没有额外的迭代JS?我可以使用嵌套循环,但它会太复杂。也许这是可能的做与lodash
?也请注意,字符串键的公司名称可能有空格。将非常感谢任何建议。
5条答案
按热度按时间n3h0vuf21#
一个回到未来的答案:
许多浏览器还不支持数组对象的新
group
方法,但很快就会提供(TC 39的第3阶段),并且已经在polyfill core-js中提供。这将允许您像这样直接执行:
或者甚至:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/group
oogrdqng2#
ua4mk5z43#
最简单的方法是:
nmpmafwu4#
伙计,这似乎是不尊重潜在的响应者,如果你甚至不检查,如果你的结构是免费的错误,在问一个问题.
因此,存在固定变量:
请注意,
companies
是冗余的,因为所有需要的信息都在employees
中。您要查找的结构可能是
Map
。您只需执行以下操作:要获得此结果(
employee
对象中不再需要字段company
):rqqzpn5f5#
因为你走的是简单的路线,所以会稍微长一点。