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) );