How to group an array of objects by key

后端 未结 24 3010
后悔当初
后悔当初 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

    You can also make use of array#forEach() method like this:

    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' }];
    
    let newcars = {}
    
    cars.forEach(car => {
      newcars[car.make] ? // check if that array exists or not in newcars object
        newcars[car.make].push({model: car.model, year: car.year})  // just push
       : (newcars[car.make] = [], newcars[car.make].push({model: car.model, year: car.year})) // create a new array and push
    })
    
    console.log(newcars);

提交回复
热议问题