
- Javascript Basics Tutorial
- Javascript - Home
- Javascript - Overview
- Javascript - Syntax
- Javascript - Enabling
- Javascript - Placement
- Javascript - Variables
- Javascript - Operators
- Javascript - If...Else
- Javascript - Switch Case
- Javascript - While Loop
- Javascript - For Loop
- Javascript - For...in
- Javascript - Loop Control
- Javascript - Functions
- Javascript - Events
- Javascript - Cookies
- Javascript - Page Redirect
- Javascript - Dialog Boxes
- Javascript - Void Keyword
- Javascript - Page Printing
- JavaScript Objects
- Javascript - Objects
- Javascript - Number
- Javascript - Boolean
- Javascript - Strings
- Javascript - Arrays
- Javascript - Date
- Javascript - Math
- Javascript - RegExp
- Javascript - HTML DOM
- JavaScript Advanced
- Javascript - Error Handling
- Javascript - Validations
- Javascript - Animation
- Javascript - Multimedia
- Javascript - Debugging
- Javascript - Image Map
- Javascript - Browsers
- JavaScript Useful Resources
- Javascript - Questions And Answers
- Javascript - Quick Guide
- Javascript - Functions
- Javascript - Resources
Grouping array values in JavaScript
Suppose we have an array of objects containing some years and weeks data like this −
const arr = [ {year: 2017, week: 45}, {year: 2017, week: 46}, {year: 2017, week: 47}, {year: 2017, week: 48}, {year: 2017, week: 50}, {year: 2017, week: 52}, {year: 2018, week: 1}, {year: 2018, week: 2}, {year: 2018, week: 5} ];
We are required to write a JavaScript function that takes in one such array. The function should return a new array where all the objects that have common value for the "year" property are grouped into a separate object.
Therefore, the output object for the above array should look like −
[ { 2017 : [{ week: 45, week: 46, week: 47, week: 48, week: 50, week: 53 }, { 2018 : [{ week: 1, week: 2, week: 5 }] ]
Example
The code for this will be −
const arr = [ {year: 2017, week: 45}, {year: 2017, week: 46}, {year: 2017, week: 47}, {year: 2017, week: 48}, {year: 2017, week: 50}, {year: 2017, week: 52}, {year: 2018, week: 1}, {year: 2018, week: 2}, {year: 2018, week: 5} ]; const groupByYear = arr => { const res = []; const map = {}; arr.forEach(item => { const temp = {}; if (!map[item.year]) { map[item.year] = []; temp[item.year] = map[item.year]; res.push(temp); }; map[item.year].push({ value: item.week }); }); return res; }; console.log(JSON.stringify(groupByYear(arr), undefined, 4));
Output
The output in the console −
[ { "2017": [ { "value": 45 }, { "value": 46 }, { "value": 47 }, { "value": 48 }, { "value": 50 }, { "value": 52 } ] }, { "2018": [ { "value": 1 }, { "value": 2 }, { "value": 5 } ] } ]
- Related Articles
- Grouping nested array in JavaScript
- Complicated array grouping JavaScript
- Grouping and sorting 2-D array in JavaScript
- Grouping array of array on the basis of elements in JavaScript
- Grouping array nested value while comparing 2 objects - JavaScript
- Array grouping on the basis of children object’s property in JavaScript
- Grouping an Array and Counting items creating new array based on Groups in JavaScript
- Explain Grouping operator in JavaScript.
- Grouping data to monthwise in JavaScript
- Grouping words with their anagrams in JavaScript
- Summing up unique array values in JavaScript
- Grouping identical entries into subarrays - JavaScript
- Grouping objects based on key property in JavaScript
- Grouping names based on first letter in JavaScript
- Grouping of same kind of numbers in JavaScript

Advertisements