function compress(source) { const keys = {}; ⇽--- 存储目标key source.replace( /([^=&]+)=([^&]*)/g, function(full, key, value) { ⇽--- 提取键值对信息 keys[key] =(keys[key] ? keys[key] + "," : "") + value; return ""; } ); const result = []; for (let key in keys) { result.push(key + "=" + keys[key]); } ⇽--- 收集key信息 return result.join("&"); ⇽--- 使用&符号链接结果 } assert(compress("foo=1&foo=2&blah=a&blah=b&foo=3") === "foo=1,2,3&blah=a,b","Compression is OK!");
使用正则表达式加replace 方法处理字符串