JSFiddle - React, Tailwind, and code Playground
by ponyspy
JavaScript
var arr = [
{
'gallery': false,
'val': 'one'
},
{
'gallery': true,
'val': 'two'
},
{
'gallery': true,
'val': 'three'
},
{
'gallery': false,
'val': 'four'
},
];
var result = arr.reduce(function(prev, curr) {
if (prev.length && curr.gallery == prev[prev.length - 1][0].gallery) {
prev[prev.length - 1].push(curr)
} else {
prev.push([curr]);
}
return prev;
}, []).reduce(function(prev, curr) {
if (curr.some(function(item) { return item.gallery == true; }) && curr.length > 1) {
return prev.concat([curr]);
} else {
return prev.concat(curr);
}
}, []);
$('body').text( JSON.stringify(result) );