JSFiddle - React, Tailwind, and code Playground
by YinCognito
JavaScript
var cars = [
{id: 1, make: 'audi', year: '2010', someProperty: true},
{id: 2, make: 'bmw', year: '2011', someProperty: false},
{id: 3, make: 'bmw', year: '2011', someProperty: true},
{id: 4, make: 'vw', year: '2010', someProperty: true},
{id: 5, make: 'vw', year: '2011', someProperty: true},
{id: 6, make: 'audi', year: '2011', someProperty: true},
{id: 7, make: 'bmw', year: '2010', someProperty: false},
{id: 8, make: 'bmw', year: '2011', someProperty: false},
{id: 9, make: 'bmw', year: '2010', someProperty: true}
];
var requiredFormat = [];
function group()
{
var spt = [], spf = [], y = "0", nexty;
temp.sort
(
function(x, y)
{
return (x.year === y.year ? (x.someProperty > y.someProperty ? -1 : x.someProperty < y.someProperty ? 1 : 0) : x.year < y.year ? -1 : 1);
}
).forEach
(
function(e, i, temp)
{
nexty = (i < temp.length - 1 ? temp[i+1].year : undefined);
(e.someProperty === true ? spt : spf).push(e);
if (e.year !== nexty)
{
y = e.year;
requiredFormat.push({somePropertyTrue: spt, somePropertyFalse: spf, year: y});
spt = [];
spf = [];
y = "0";
}
}
);
}
var temp = cars.slice(0);
group();
console.log("cars: ", cars);
console.log("temp: ", temp);
console.log("requiredFormat: ", requiredFormat);