From bc90696163f006365ed1f41dc7ef7a655ed47ccf Mon Sep 17 00:00:00 2001 From: Andreas Lind Date: Fri, 27 Jul 2018 00:09:13 +0200 Subject: [PATCH] [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) --- lib/stringify.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/stringify.js b/lib/stringify.js index 4b510688..616f8458 100644 --- a/lib/stringify.js +++ b/lib/stringify.js @@ -15,6 +15,12 @@ var arrayPrefixGenerators = { } }; +var isArray = Array.isArray; +var push = Array.prototype.push; +var pushToArray = function (arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); +}; + var toISO = Date.prototype.toISOString; var defaults = { @@ -85,7 +91,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, @@ -99,7 +105,7 @@ var stringify = function stringify( // eslint-disable-line func-name-matching formatter )); } else { - values = values.concat(stringify( + pushToArray(values, stringify( obj[key], prefix + (allowDots ? '.' + key : '[' + key + ']'), generateArrayPrefix, @@ -182,8 +188,7 @@ module.exports = function (object, opts) { if (skipNulls && obj[key] === null) { continue; } - - keys = keys.concat(stringify( + pushToArray(keys, stringify( obj[key], key, generateArrayPrefix,