35 lines
740 B
JavaScript
35 lines
740 B
JavaScript
|
import _isArrayLike from "./_isArrayLike.js";
|
||
|
/**
|
||
|
* `_makeFlat` is a helper function that returns a one-level or fully recursive
|
||
|
* function based on the flag passed in.
|
||
|
*
|
||
|
* @private
|
||
|
*/
|
||
|
|
||
|
export default function _makeFlat(recursive) {
|
||
|
return function flatt(list) {
|
||
|
var value, jlen, j;
|
||
|
var result = [];
|
||
|
var idx = 0;
|
||
|
var ilen = list.length;
|
||
|
|
||
|
while (idx < ilen) {
|
||
|
if (_isArrayLike(list[idx])) {
|
||
|
value = recursive ? flatt(list[idx]) : list[idx];
|
||
|
j = 0;
|
||
|
jlen = value.length;
|
||
|
|
||
|
while (j < jlen) {
|
||
|
result[result.length] = value[j];
|
||
|
j += 1;
|
||
|
}
|
||
|
} else {
|
||
|
result[result.length] = list[idx];
|
||
|
}
|
||
|
|
||
|
idx += 1;
|
||
|
}
|
||
|
|
||
|
return result;
|
||
|
};
|
||
|
}
|