Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
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
}
]
}
]Advertisements