diff --git a/lib/stringify.js b/lib/stringify.js index 5bf5e8b5..a0f91ceb 100644 --- a/lib/stringify.js +++ b/lib/stringify.js @@ -15,6 +15,14 @@ var arrayPrefixGenerators = { } }; +var pushToArray = function (arr, valueOrArray) { + if (Array.isArray(valueOrArray)) { + Array.prototype.push.apply(arr, valueOrArray); + } else { + arr.push(valueOrArray); + } +}; + var toISO = Date.prototype.toISOString; var defaults = { @@ -87,7 +95,7 @@ var stringify = function stringify( // eslint-disable-line func-name-matching } if (Array.isArray(obj)) { - values = values.concat(stringify( + pushToArray(values, stringify( obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, @@ -103,7 +111,7 @@ var stringify = function stringify( // eslint-disable-line func-name-matching charset )); } else { - values = values.concat(stringify( + pushToArray(values, stringify( obj[key], prefix + (allowDots ? '.' + key : '[' + key + ']'), generateArrayPrefix, @@ -194,8 +202,7 @@ module.exports = function (object, opts) { if (skipNulls && obj[key] === null) { continue; } - - keys = keys.concat(stringify( + pushToArray(keys, stringify( obj[key], key, generateArrayPrefix,