How to group an array of objects by key

后端 未结 24 2919
后悔当初
后悔当初 2020-11-21 05:13

Does anyone know of a (lodash if possible too) way to group an array of objects by an object key then create a new array of objects based on the grouping? For example, I hav

24条回答
  •  日久生厌
    2020-11-21 05:55

    With lodash/fp you can create a function with _.flow() that 1st groups by a key, and then map each group, and omits a key from each item:

    const { flow, groupBy, mapValues, map, omit } = _;
    
    const groupAndOmitBy = key => flow(
      groupBy(key),
      mapValues(map(omit(key)))
    );
    
    const cars = [{ make: 'audi', model: 'r8', year: '2012' }, { make: 'audi', model: 'rs5', year: '2013' }, { make: 'ford', model: 'mustang', year: '2012' }, { make: 'ford', model: 'fusion', year: '2015' }, { make: 'kia', model: 'optima', year: '2012' }];
    
    const groupAndOmitMake = groupAndOmitBy('make');
    
    const result = groupAndOmitMake(cars);
    
    console.log(result);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

提交回复
热议问题