Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / chain-able-deps   js

Repository URL to install this package:

Version: 6.0.4 

/ src / array / flatten.ts

/**
 * @desc flatten multi-dimensional arrays in 1 line
 * @since 4.0.0
 * @memberOf array
 *
 * @param x array(s) to flatten
 * @return flattened arrays
 *
 * {@link https://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays-in-javascript stack-overflow-flatten}
 * {@link https://github.com/andrewplummer/Sugar/blob/master/lib/array.js#L202 sugar-flatten}
 * {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L527 underscore-flatten}
 * @see {@link underscore-flatten}
 * @see {@link sugar-flatten}
 * @see {@link stack-overflow-flatten}
 *
 * @example
 *
 *    flatten([[1], [2]])
 *    //=> [1, 2]
 *    flatten([[1], 2])
 *    //=> [1, 2]
 *    flatten(1)
 *    //=> [1]
 *
 */
export default <Type>(x: Array<Array<Type>>) => [].concat.apply([], x)

/**
 * @see https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/lodash/common/array.d.ts#L1882
 */
// const eh = flatten([1, {}, undefined, ''])
// const [first, second, last, pushed] = eh
// function flatten(arr) {
//   const flat = [].concat(...arr)
//   return flat.some(Array.isArray) ? flatten(flat) : flat
// }