group and reduce array object js code example

Example 1: javascript array group by

function groupByKey(array, key) {
   return array
     .reduce((hash, obj) => {
       if(obj[key] === undefined) return hash; 
       return Object.assign(hash, { [obj[key]]:( hash[obj[key]] || [] ).concat(obj)})
     }, {})
}


var 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'}];

var result = groupByKey(cars, 'make');

JSON.stringify(result,"","\t");
{
	"audi": [
		{
			"make": "audi",
			"model": "r8",
			"year": "2012"
		},
		{
			"make": "audi",
			"model": "rs5",
			"year": "2013"
		}
	],
	"ford": [
		{
			"make": "ford",
			"model": "mustang",
			"year": "2012"
		},
		{
			"make": "ford",
			"model": "fusion",
			"year": "2015"
		}
	],
	"kia": [
		{
			"make": "kia",
			"model": "optima",
			"year": "2012"
		}
	]
}

Example 2: group by in javascript

let group = cars.reduce((r, a) => { console.log("a", a); console.log('r', r); r[a.make] = [...r[a.make] || [], a]; return r;}, {});console.log("group", group);