35 lines
870 B
JavaScript
35 lines
870 B
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
exports.split = split;
|
|
/** @module */
|
|
/**
|
|
* Split array into multiple arrays by specified condition.
|
|
*
|
|
* @param {Array} arr Target array.
|
|
* @param {splitCallback} func Callback to split array.
|
|
* @param {boolean} [keepSplitedValue=false] Keep splited value. The split
|
|
* point is before the matched value.
|
|
* @returns {Array[]} Splited array.
|
|
*/
|
|
function split(arr, func, keepSplitedValue = false) {
|
|
const ret = [[]];
|
|
for (const value of arr) {
|
|
/**
|
|
* Return true at the split point.
|
|
*
|
|
* @callback splitCallback
|
|
* @param {*} value
|
|
*/
|
|
if (func(value)) {
|
|
ret.push(keepSplitedValue ? [value] : []);
|
|
} else {
|
|
ret[ret.length - 1].push(value);
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
var _default = exports.default = split; |