使用JavaScript ES6迭代器转换数组

使用JavaScript ES6迭代器转换数组,javascript,ecmascript-6,Javascript,Ecmascript 6,如何使用javascript es6迭代器函数将employees数组变量转换为departments数组变量?我正在寻找一个有效的解决方案 发件人: var employees = [ { name: 'John', department: 'Digital Experience' }, { name: 'Doe', department: 'Digital Transformation' }, { name: 'Symon', department: 'Digital

如何使用javascript es6迭代器函数将employees数组变量转换为departments数组变量?我正在寻找一个有效的解决方案

发件人:

var employees = [
    { name: 'John', department: 'Digital Experience' },
    { name: 'Doe', department: 'Digital Transformation' },
    { name: 'Symon', department: 'Digital Planning' },
    { name: 'Joey', department: 'Digital Experience' },
    { name: 'Abul', department: 'Digital Experience' },
    { name: 'Smith', department: 'Digital Experience' },
    { name: 'Ajad', department: 'Digital Transformation' },
    { name: 'Rahim', department: 'Digital Transformation' },
    { name: 'Luke', department: 'Digital Planning' },
];
var departments = [
        {
            department: 'Digital Experience',
            employeeNames: ['Johm', 'Joey', 'Abul', 'Smith']
        },
        {
            department: 'Digital Transformation',
            employeeNames: ['Doe', 'Ajad', 'Rahim']
        },
        {
            department: 'Digital Planning',
            employeeNames: ['Symon', 'Luke']
        }
    ]
至:

var employees = [
    { name: 'John', department: 'Digital Experience' },
    { name: 'Doe', department: 'Digital Transformation' },
    { name: 'Symon', department: 'Digital Planning' },
    { name: 'Joey', department: 'Digital Experience' },
    { name: 'Abul', department: 'Digital Experience' },
    { name: 'Smith', department: 'Digital Experience' },
    { name: 'Ajad', department: 'Digital Transformation' },
    { name: 'Rahim', department: 'Digital Transformation' },
    { name: 'Luke', department: 'Digital Planning' },
];
var departments = [
        {
            department: 'Digital Experience',
            employeeNames: ['Johm', 'Joey', 'Abul', 'Smith']
        },
        {
            department: 'Digital Transformation',
            employeeNames: ['Doe', 'Ajad', 'Rahim']
        },
        {
            department: 'Digital Planning',
            employeeNames: ['Symon', 'Luke']
        }
    ]

我相信还有其他的方法,不过这似乎很短

var e=[
{名称:'John',部门:'Digital Experience'},
{名称:'Doe',部门:'Digital Transformation'},
{名称:'Symon',部门:'Digital Planning'},
{名称:'Joey',部门:'Digital Experience'},
{名称:'Abul',部门:'Digital Experience'},
{名称:'Smith',部门:'Digital Experience'},
{名称:'Ajad',部门:'Digital Transformation'},
{名称:'Rahim',部门:'Digital Transformation'},
{名称:'Luke',部门:'Digital Planning'},
];
const departments=[…新集合(e.map(x=>x.department))].map(y=>{
返回{
部门:y,,
员工名称:e.filter(z=>z.department==y).map(w=>w.name)
}
})

console.log(departments)
是否有您尝试过的低效代码?为什么是迭代器?为什么不只是一个reduce操作呢?这是reduce的完美用例。为什么不减少呢?