00001 var arrayPush = require('./_arrayPush'),
00002 isFlattenable = require('./_isFlattenable');
00003
00015 function baseFlatten(array, depth, predicate, isStrict, result) {
00016 var index = -1,
00017 length = array.length;
00018
00019 predicate || (predicate = isFlattenable);
00020 result || (result = []);
00021
00022 while (++index < length) {
00023 var value = array[index];
00024 if (depth > 0 && predicate(value)) {
00025 if (depth > 1) {
00026
00027 baseFlatten(value, depth - 1, predicate, isStrict, result);
00028 } else {
00029 arrayPush(result, value);
00030 }
00031 } else if (!isStrict) {
00032 result[result.length] = value;
00033 }
00034 }
00035 return result;
00036 }
00037
00038 module.exports = baseFlatten;