artdaq_node_server  v1_00_07
 All Classes Namespaces Files Variables Pages
_baseFlatten.js
1 var arrayPush = require('./_arrayPush'),
2  isFlattenable = require('./_isFlattenable');
3 
15 function baseFlatten(array, depth, predicate, isStrict, result) {
16  var index = -1,
17  length = array.length;
18 
19  predicate || (predicate = isFlattenable);
20  result || (result = []);
21 
22  while (++index < length) {
23  var value = array[index];
24  if (depth > 0 && predicate(value)) {
25  if (depth > 1) {
26  // Recursively flatten arrays (susceptible to call stack limits).
27  baseFlatten(value, depth - 1, predicate, isStrict, result);
28  } else {
29  arrayPush(result, value);
30  }
31  } else if (!isStrict) {
32  result[result.length] = value;
33  }
34  }
35  return result;
36 }
37 
38 module.exports = baseFlatten;