Spaces:
Runtime error
Runtime error
// Stack grow safe implementation | |
; | |
var ensureValue = require("../../object/valid-value") | |
, isArray = Array.isArray | |
, objHasOwnProperty = Object.prototype.hasOwnProperty; | |
module.exports = function () { | |
var input = ensureValue(this), index = 0, remaining, remainingIndexes, length, i, result = []; | |
// Jslint: ignore | |
main: while (input) { | |
length = input.length; | |
for (i = index; i < length; ++i) { | |
if (!objHasOwnProperty.call(input, i)) continue; | |
if (isArray(input[i])) { | |
if (i < length - 1) { | |
// eslint-disable-next-line max-depth | |
if (!remaining) { | |
remaining = []; | |
remainingIndexes = []; | |
} | |
remaining.push(input); | |
remainingIndexes.push(i + 1); | |
} | |
input = input[i]; | |
index = 0; | |
continue main; | |
} | |
result.push(input[i]); | |
} | |
if (remaining) { | |
input = remaining.pop(); | |
index = remainingIndexes.pop(); | |
} else { | |
input = null; | |
} | |
} | |
return result; | |
}; | |