Skip to content
Snippets Groups Projects
Commit ebc4d713 authored by Yadd's avatar Yadd
Browse files

New upstream version 2.1.2

parent aac6607a
No related branches found
No related tags found
No related merge requests found
Showing
with 368 additions and 23 deletions
......@@ -4,7 +4,6 @@
[![NPM downloads][downloads-image]][downloads-url]
[![Build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
[![Bundle size][bundlephobia-image]][bundlephobia-url]
> Flatten nested arrays.
......@@ -16,17 +15,27 @@ npm install array-flatten --save
## Usage
```js
import { flatten } from "array-flatten";
```javascript
var flatten = require('array-flatten')
flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]);
flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
(function() {
flatten(arguments); //=> [1, 2, 3]
})(1, [2, 3]);
flatten.depth([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
//=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
(function () {
flatten.from(arguments) //=> [1, 2, 3]
})(1, [2, 3])
```
### Methods
* **flatten(array)** Flatten a nested array structure
* **flatten.from(arrayish)** Flatten an array-like structure (E.g. arguments)
* **flatten.depth(array, depth)** Flatten a nested array structure with a specific depth
* **flatten.fromDepth(arrayish, depth)** Flatten an array-like structure with a specific depth
## License
MIT
......@@ -39,5 +48,3 @@ MIT
[travis-url]: https://travis-ci.org/blakeembrey/array-flatten
[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat
[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master
[bundlephobia-image]: https://img.shields.io/bundlephobia/minzip/array-flatten.svg
[bundlephobia-url]: https://bundlephobia.com/result?p=array-flatten
declare function flatten <T> (array: flatten.NestedArray<T>): T[];
declare namespace flatten {
export interface NestedArray <T> extends ReadonlyArray<T | NestedArray<T>> {}
export interface NestedList <T> {
[index: number]: T | NestedList<T>;
length: number;
}
export function from <T> (array: NestedList<T>): T[];
export function depth <T> (array: NestedArray<T>, depth: number): NestedArray<T>;
export function depthFrom <T> (array: NestedList<T>, depth: number): NestedArray<T>;
}
export = flatten;
'use strict'
/**
* Expose `arrayFlatten`.
*/
module.exports = flatten
module.exports.from = flattenFrom
module.exports.depth = flattenDepth
module.exports.fromDepth = flattenFromDepth
/**
* Flatten an array.
*
* @param {Array} array
* @return {Array}
*/
function flatten (array) {
if (!Array.isArray(array)) {
throw new TypeError('Expected value to be an array')
}
return flattenFrom(array)
}
/**
* Flatten an array-like structure.
*
* @param {Array} array
* @return {Array}
*/
function flattenFrom (array) {
return flattenDown(array, [])
}
/**
* Flatten an array-like structure with depth.
*
* @param {Array} array
* @param {number} depth
* @return {Array}
*/
function flattenDepth (array, depth) {
if (!Array.isArray(array)) {
throw new TypeError('Expected value to be an array')
}
return flattenFromDepth(array, depth)
}
/**
* Flatten an array-like structure with depth.
*
* @param {Array} array
* @param {number} depth
* @return {Array}
*/
function flattenFromDepth (array, depth) {
if (typeof depth !== 'number') {
throw new TypeError('Expected the depth to be a number')
}
return flattenDownDepth(array, [], depth)
}
/**
* Flatten an array indefinitely.
*
* @param {Array} array
* @param {Array} result
* @return {Array}
*/
function flattenDown (array, result) {
for (var i = 0; i < array.length; i++) {
var value = array[i]
if (Array.isArray(value)) {
flattenDown(value, result)
} else {
result.push(value)
}
}
return result
}
/**
* Flatten an array with depth.
*
* @param {Array} array
* @param {Array} result
* @param {number} depth
* @return {Array}
*/
function flattenDownDepth (array, result, depth) {
depth--
for (var i = 0; i < array.length; i++) {
var value = array[i]
if (depth > -1 && Array.isArray(value)) {
flattenDownDepth(value, result, depth)
} else {
result.push(value)
}
}
return result
}
var current = require('../../..').from
module.exports = args
function args () {
return current(arguments)
}
var current = require('../../..').from
module.exports = loop
function loop () {
var args = new Array(arguments.length)
var len = args.length
while (len--) {
args[len] = arguments[len]
}
return current(args)
}
var current = require('../../..').from
var _slice = Array.prototype.slice
module.exports = slice
function slice () {
return current(_slice.call(arguments))
}
module.exports = flatten;
function flatten(array) {
var result = Array.prototype.concat.apply([], array);
if (result.length === array.length) {
return result;
}
return flatten(result);
}
const { flatten } = require("../../dist");
module.exports = flatten;
module.exports = require('../../..').depth
module.exports = function (array, depth) {
if (depth < 1) {
return array
}
return flatten(array, [], depth || Infinity)
}
function flatten (array, result, depth) {
depth--
var len = array.length
var i = 0
while (len--) {
if (depth > -1 && Array.isArray(array[i])) {
flatten(array[i], result, depth)
} else {
result.push(array[i])
}
i++
}
return result
}
module.exports = flatten
function flatten (array) {
var result = Array.prototype.concat.apply([], array)
if (result.length === array.length) {
return result
}
return flatten(result)
}
module.exports = require('../../..')
module.exports = flatten;
module.exports = flatten
function flatten(array) {
return flattenWithResult(array, []);
function flatten (array) {
return flattenWithResult(array, [])
}
function flattenWithResult(array, result) {
function flattenWithResult (array, result) {
for (var i = 0; i < array.length; i++) {
var value = array[i];
var value = array[i]
if (Array.isArray(value)) {
flattenWithResult(value, result);
flattenWithResult(value, result)
} else {
result.push(value);
result.push(value)
}
}
return result;
return result
}
module.exports = flatten;
module.exports = flatten
function flatten(array) {
return flattenWithResult(array, []);
function flatten (array) {
return flattenWithResult(array, [])
}
function flattenWithResult(array, result) {
function flattenWithResult (array, result) {
for (var i = 0; i < array.length; i++) {
if (Array.isArray(array[i])) {
flattenWithResult(array[i], result);
flattenWithResult(array[i], result)
} else {
result.push(array[i]);
result.push(array[i])
}
}
return result;
return result
}
module.exports = flatten
function flatten (array, depth) {
if (depth == null) {
return flattenWithoutDepth(array, [])
}
return flattenWithDepth(array, [], depth)
}
function flattenWithoutDepth (array, result) {
for (var i = 0; i < array.length; i++) {
if (Array.isArray(array[i])) {
flattenWithoutDepth(array[i], result)
} else {
result.push(array[i])
}
}
return result
}
function flattenWithDepth (array, result, depth) {
for (var i = 0; i < array.length; i++) {
if (depth > 0 && Array.isArray(array[i])) {
flattenWithDepth(array[i], result, depth - 1)
} else {
result.push(array[i])
}
}
return result
}
module.exports = flatten
function flatten (array) {
var result = []
flattenWithResult(array, result)
return result
}
function flattenWithResult (array, result) {
for (var i = 0; i < array.length; i++) {
var value = array[i]
if (Array.isArray(value)) {
flattenWithResult(value, result)
} else {
result.push(value)
}
}
}
module.exports = reduce
function reduce (array) {
return array.reduce(function (acc, value) {
if (Array.isArray(value)) {
return acc.concat(reduce(value))
}
return acc.concat(value)
}, [])
}
var _toString = Object.prototype.toString
module.exports = flatten
function flatten (array) {
return flattenWithResult(array, [])
}
function flattenWithResult (array, result) {
for (var i = 0; i < array.length; i++) {
if (_toString.call(array[i]) === '[object Array]') {
flattenWithResult(array[i], result)
} else {
result.push(array[i])
}
}
return result
}
module.exports = flatten
function flatten (array) {
return flattenWithResult(array, [])
}
function flattenWithResult (array, result) {
var len = array.length
var i = -1
while (++i < len) {
if (Array.isArray(array[i])) {
flattenWithResult(array[i], result)
} else {
result.push(array[i])
}
}
return result
}
module.exports = flatten
function flatten (array) {
return flattenWithResult(array, [])
}
function flattenWithResult (array, result) {
var len = array.length
var num = 0
while (len--) {
var i = num++
if (Array.isArray(array[i])) {
flattenWithResult(array[i], result)
} else {
result.push(array[i])
}
}
return result
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment