Hola tengo esta variedad de objetos
[{ name: "person1", age: 23, }, { name: "person2", age: 23, }, { name: "person3", age: 24, }, { name: "person4", age: 24, }, { name: "person5", age: 25, } ]entonces lo que quiero es clasificar esta matriz según la edad para obtener
[ [{ name: "person1", age: 23, }, { name: "person2", age: 23, } ], [{ name: "person3", age: 24, }, { name: "person4", age: 24, } ], [{ name: "person5", age: 25, }] ]Puedo hacerlo a la antigua usanza, pero lo que quiero con menos código, está bien usar lodash para obtener el resultado deseado.
Primero podría usar reduce para crear un objeto donde los elementos se agrupen por edad almacenados como una propiedad, luego llame a Object.values en el resultado:
const arr=[{name:"person1",age:23},{name:"person2",age:23},{name:"person3",age:24},{name:"person4",age:24},{name:"person5",age:25}]; const byAge = arr.reduce((a,b) => (a[b.age] ? a[b.age].push(b) : a[b.age] = [b], a), {}) const result = Object.values(byAge) console.log(result)Podemos resolver esto usando lodash
const MockData = [ { name: "person1", age: 23, }, { name: "person2", age: 23, }, { name: "person3", age: 24, }, { name: "person4", age: 24, }, { name: "person5", age: 25, } ]; _.groupBy(MockData, 'age'); // we get the desired result !