UNPKG

foop

Version:

interfaces that describe their intentions.

54 lines (47 loc) 3.74 kB
var isArrayLike = require('../is/arrayLike') // const toarr = require('../to-arr') /** * `flatten` is a helper function that returns a fully recursive * * @memberOf array * @since 5.0.0-beta.6 * * @param {Array<Array>} list multi-dimensional array-like list * @return {Array<*>} flattened list * * @see array/flatten * * @example * * flattenRecursive([[0, [1]]]) * //=> [0, 1] * */ module.exports = function flattenRecursive(list) { // if (!isArrayLike(list)) return toarr(list) if (!isArrayLike(list)) { return [] } // starting values var result = [] var idx = 0 var listLen = list.length // nested var value var nestedIdx while (idx < listLen) { // go deeper if needed if (isArrayLike(list[idx])) { value = flattenRecursive(list[idx]) nestedIdx = 0 while (nestedIdx < value.length) { result[result.length] = value[nestedIdx++] } } // just `push`, non-array value else { result[result.length] = list[idx] } idx += 1 } return result } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlblJlY3Vyc2l2ZS5qcyIsInNvdXJjZXMiOlsiZmxhdHRlblJlY3Vyc2l2ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2lzL2FycmF5TGlrZScpXG4vLyBjb25zdCB0b2FyciA9IHJlcXVpcmUoJy4uL3RvLWFycicpXG5cbi8qKlxuICogYGZsYXR0ZW5gIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGZ1bGx5IHJlY3Vyc2l2ZVxuICpcbiAqIEBtZW1iZXJPZiBhcnJheVxuICogQHNpbmNlIDUuMC4wLWJldGEuNlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8QXJyYXk+fSBsaXN0IG11bHRpLWRpbWVuc2lvbmFsIGFycmF5LWxpa2UgbGlzdFxuICogQHJldHVybiB7QXJyYXk8Kj59IGZsYXR0ZW5lZCBsaXN0XG4gKlxuICogQHNlZSBhcnJheS9mbGF0dGVuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICBmbGF0dGVuUmVjdXJzaXZlKFtbMCwgWzFdXV0pXG4gKiAgICAvLz0+IFswLCAxXVxuICpcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmbGF0dGVuUmVjdXJzaXZlKGxpc3QpIHtcbiAgLy8gaWYgKCFpc0FycmF5TGlrZShsaXN0KSkgcmV0dXJuIHRvYXJyKGxpc3QpXG4gIGlmICghaXNBcnJheUxpa2UobGlzdCkpIHJldHVybiBbXVxuXG4gIC8vIHN0YXJ0aW5nIHZhbHVlc1xuICBsZXQgcmVzdWx0ID0gW11cbiAgbGV0IGlkeCA9IDBcbiAgbGV0IGxpc3RMZW4gPSBsaXN0Lmxlbmd0aFxuICAvLyBuZXN0ZWRcbiAgbGV0IHZhbHVlXG4gIGxldCBuZXN0ZWRJZHhcblxuICB3aGlsZSAoaWR4IDwgbGlzdExlbikge1xuICAgIC8vIGdvIGRlZXBlciBpZiBuZWVkZWRcbiAgICBpZiAoaXNBcnJheUxpa2UobGlzdFtpZHhdKSkge1xuICAgICAgdmFsdWUgPSBmbGF0dGVuUmVjdXJzaXZlKGxpc3RbaWR4XSlcbiAgICAgIG5lc3RlZElkeCA9IDBcblxuICAgICAgd2hpbGUgKG5lc3RlZElkeCA8IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZVtuZXN0ZWRJZHgrK11cbiAgICAgIH1cbiAgICB9XG4gICAgLy8ganVzdCBgcHVzaGAsIG5vbi1hcnJheSB2YWx1ZVxuICAgIGVsc2Uge1xuICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gbGlzdFtpZHhdXG4gICAgfVxuXG4gICAgaWR4ICs9IDFcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJjb25zdCIsImxldCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9COUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLGdCQUFnQixDQUFDLElBQUksRUFBRTs7RUFFL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFBLE9BQU8sRUFBRSxFQUFBOzs7RUFHakNDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRTtFQUNmQSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7RUFDWEEsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTTs7RUFFekJBLEdBQUcsQ0FBQyxLQUFLO0VBQ1RBLEdBQUcsQ0FBQyxTQUFTOztFQUViLE9BQU8sR0FBRyxHQUFHLE9BQU8sRUFBRTs7SUFFcEIsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7TUFDMUIsS0FBSyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUNuQyxTQUFTLEdBQUcsQ0FBQzs7TUFFYixPQUFPLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO09BQzNDO0tBQ0Y7O1NBRUk7TUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7S0FDbEM7O0lBRUQsR0FBRyxJQUFJLENBQUM7R0FDVDs7RUFFRCxPQUFPLE1BQU07Q0FDZDsifQ==