JSFiddle - React, Tailwind, and code Playground
by Adam Boduch
HTML
<script src="https://rawgit.com/lodash/lodash/master/dist/lodash.min.js"></script>
JavaScript
var arr = [
{type:'a', name:'a1'}, {type:'b', name:'b1'}, {type:'hr'},
{type:'a', name:'a2'}, {type:'b', name:'b2'}, {type:'hr'},
{type:'a', name:'a3'}, {type:'b', name:'b2'}, {type:'hr'}
];
function splitBy(array, predicate, result = []) {
const taken = _.takeWhile(array, predicate);
const remaining = _.tail(_.dropWhile(array, predicate));
return remaining.length ?
splitBy(remaining, predicate, result.concat([taken])) :
result.concat([taken]);
}
console.log(splitBy(arr, _.negate(_.partial(_.isEqual, { type: 'hr' }))));