groupBy
groupBy
(toGroup: GroupingFn) => (collection: Collection) => GroupedValues
Place values of a collection into groups
const groupByFloor = groupBy(Math.floor) const result = groupByFloor([1.2, 2.7, 1.8]) console.log(result) // is { // 1: [1.2, 1.8] // 2: [2.7] // }
const groupByFloor = groupBy(Math.floor) const result = groupByFloor([1.2, 2.7, 1.8]) console.log(result) // is { // 1: [1.2, 1.8] // 2: [2.7] // }
const groupByFloor = groupBy(Math.floor) const result = groupByFloor([1.2, 2.7, 1.8]) console.log(result) // is { // 1: [1.2, 1.8] // 2: [2.7] // }
const groupByFloor = groupBy(Math.floor) const result = groupByFloor([1.2, 2.7, 1.8]) console.log(result) // is { // 1: [1.2, 1.8] // 2: [2.7] // }
Sometimes we want to place values into groups. Below, we work for a jet ski rental company. Let's split our jet skis into classes of 'beginner' and 'proficient.'
const jetSkis = [ { brand: 'WaveRunner', mph: 45, }, { brand: 'Sea-Doo', mph: 50, }, { brand: 'Jet Ski', mph: 55, }, ] const getRecommendedExperience = jetSki => { return jetSki.mph < 50 ? 'beginner' : 'proficient' } const groupByExperience = groupBy(getRecommendedExperience) const jetSkisByExperience = groupByExperience(jetSkis) console.log(jetSkisByExperience) // is { // beginner: [ // { brand: 'WaveRunner', mph: 45 } // ], // proficient: [ // { brand: 'Sea-Doo', mph: 50 } // { brand: 'Jet Ski', mph: 55 } // ], // }
type JetSki = { brand: string; mph: number } const jetSkis: JetSki[] = [ { brand: 'WaveRunner', mph: 45, }, { brand: 'Sea-Doo', mph: 50, }, { brand: 'Jet Ski', mph: 55, }, ] const getRecommendedExperience = (jetSki: JetSki) => { return jetSki.mph < 50 ? 'beginner' : 'proficient' } const groupByExperience = groupBy(getRecommendedExperience)<JetSki[]> const jetSkisByExperience = groupByExperience(jetSkis) console.log(jetSkisByExperience) // is { // beginner: [ // { brand: 'WaveRunner', mph: 45 } // ], // proficient: [ // { brand: 'Sea-Doo', mph: 50 } // { brand: 'Jet Ski', mph: 55 } // ], // }
const jetSkis = [ { brand: 'WaveRunner', mph: 45, }, { brand: 'Sea-Doo', mph: 50, }, { brand: 'Jet Ski', mph: 55, }, ] const getRecommendedExperience = jetSki => { return jetSki.mph < 50 ? 'beginner' : 'proficient' } const groupByExperience = groupBy( getRecommendedExperience ) const jetSkisByExperience = groupByExperience(jetSkis) console.log(jetSkisByExperience) // is { // beginner: [ // { brand: 'WaveRunner', mph: 45 } // ], // proficient: [ // { brand: 'Sea-Doo', mph: 50 } // { brand: 'Jet Ski', mph: 55 } // ], // }
type JetSki = { brand: string; mph: number } const jetSkis: JetSki[] = [ { brand: 'WaveRunner', mph: 45, }, { brand: 'Sea-Doo', mph: 50, }, { brand: 'Jet Ski', mph: 55, }, ] const getRecommendedExperience = ( jetSki: JetSki ) => { return jetSki.mph < 50 ? 'beginner' : 'proficient' } const groupByExperience = groupBy( getRecommendedExperience )<JetSki[]> const jetSkisByExperience = groupByExperience(jetSkis) console.log(jetSkisByExperience) // is { // beginner: [ // { brand: 'WaveRunner', mph: 45 } // ], // proficient: [ // { brand: 'Sea-Doo', mph: 50 } // { brand: 'Jet Ski', mph: 55 } // ], // }