Sha256: 766ca145b6d25e3d60f352a716e8fa1876bcdf362c0767c360cf24f335bc281e

Contents?: true

Size: 1.17 KB

Versions: 52

Compression:

Stored size: 1.17 KB

Contents

'use strict'

/**
 * Expose `arrayFlatten`.
 */
module.exports = arrayFlatten

/**
 * Recursive flatten function with depth.
 *
 * @param  {Array}  array
 * @param  {Array}  result
 * @param  {Number} depth
 * @return {Array}
 */
function flattenWithDepth (array, result, depth) {
  for (var i = 0; i < array.length; i++) {
    var value = array[i]

    if (depth > 0 && Array.isArray(value)) {
      flattenWithDepth(value, result, depth - 1)
    } else {
      result.push(value)
    }
  }

  return result
}

/**
 * Recursive flatten function. Omitting depth is slightly faster.
 *
 * @param  {Array} array
 * @param  {Array} result
 * @return {Array}
 */
function flattenForever (array, result) {
  for (var i = 0; i < array.length; i++) {
    var value = array[i]

    if (Array.isArray(value)) {
      flattenForever(value, result)
    } else {
      result.push(value)
    }
  }

  return result
}

/**
 * Flatten an array, with the ability to define a depth.
 *
 * @param  {Array}  array
 * @param  {Number} depth
 * @return {Array}
 */
function arrayFlatten (array, depth) {
  if (depth == null) {
    return flattenForever(array, [])
  }

  return flattenWithDepth(array, [], depth)
}

Version data entries

52 entries across 51 versions & 16 rubygems

Version Path
rapid_stack-0.2.0 templates/frontend/node_modules/array-flatten/array-flatten.js
rapid_stack-0.1.1 templates/FrontEnd/node_modules/array-flatten/array-flatten.js
rapid_stack-0.1.0 templates/FrontEnd/node_modules/array-flatten/array-flatten.js
optimacms-0.1.61 spec/dummy/node_modules/array-flatten/array-flatten.js
disco_app-0.18.0 test/dummy/node_modules/array-flatten/array-flatten.js
disco_app-0.18.2 test/dummy/node_modules/array-flatten/array-flatten.js
disco_app-0.16.1 test/dummy/node_modules/array-flatten/array-flatten.js
disco_app-0.15.2 test/dummy/node_modules/array-flatten/array-flatten.js
disco_app-0.18.4 test/dummy/node_modules/array-flatten/array-flatten.js
disco_app-0.18.1 test/dummy/node_modules/array-flatten/array-flatten.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/array-flatten/array-flatten.js
disco_app-0.14.0 test/dummy/node_modules/array-flatten/array-flatten.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/array-flatten/array-flatten.js
tang-0.2.1 spec/tang_app/node_modules/array-flatten/array-flatten.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/array-flatten/array-flatten.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/array-flatten/array-flatten.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/array-flatten/array-flatten.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/array-flatten/array-flatten.js
tang-0.2.0 spec/tang_app/node_modules/array-flatten/array-flatten.js
tang-0.1.0 spec/tang_app/node_modules/array-flatten/array-flatten.js