From 578e731321c29755a1f77df65cb4affccd83ae94 Mon Sep 17 00:00:00 2001 From: sapics Date: Wed, 17 Jun 2020 10:08:19 +0900 Subject: [PATCH] querystring: fix stringify for empty array PR-URL: https://github.com/nodejs/node/pull/33918 Reviewed-By: James M Snell Reviewed-By: Anna Henningsen --- lib/querystring.js | 13 ++++++------- test/parallel/test-querystring.js | 3 ++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/querystring.js b/lib/querystring.js index 4c1b9f87d94e11..f057226f08b51f 100644 --- a/lib/querystring.js +++ b/lib/querystring.js @@ -196,7 +196,6 @@ function stringify(obj, sep, eq, options) { if (obj !== null && typeof obj === 'object') { const keys = ObjectKeys(obj); const len = keys.length; - const flast = len - 1; let fields = ''; for (let i = 0; i < len; ++i) { const k = keys[i]; @@ -207,20 +206,20 @@ function stringify(obj, sep, eq, options) { if (ArrayIsArray(v)) { const vlen = v.length; if (vlen === 0) continue; - const vlast = vlen - 1; + if (fields) + fields += sep; for (let j = 0; j < vlen; ++j) { + if (j) + fields += sep; fields += ks; fields += convert(v[j], encode); - if (j < vlast) - fields += sep; } } else { + if (fields) + fields += sep; fields += ks; fields += convert(v, encode); } - - if (i < flast) - fields += sep; } return fields; } diff --git a/test/parallel/test-querystring.js b/test/parallel/test-querystring.js index 72d8e3315f04fc..7dbd2101dd1a9f 100644 --- a/test/parallel/test-querystring.js +++ b/test/parallel/test-querystring.js @@ -144,7 +144,8 @@ const qsWeirdObjects = [ [{ n: null }, 'n=', { 'n': '' }], [{ nan: NaN }, 'nan=', { 'nan': '' }], [{ inf: Infinity }, 'inf=', { 'inf': '' }], - [{ a: [], b: [] }, '', {}] + [{ a: [], b: [] }, '', {}], + [{ a: 1, b: [] }, 'a=1', { 'a': '1' }] ]; // }}}