JavaScript/Node.js遍历数组拼接模板字符串输出异常如何解决
问题原因
你读取的是Windows格式的文本文件,换行符为\r\n,使用\n分割字符串后,每个数组元素末尾都会残留\r(回车符)。
回车符的终端表现是将光标移动到当前行的开头,因此打印时\r后的&structure=...内容会覆盖掉此前输出的URL前缀,最终呈现出输出不完整的效果。最后一个元素是文件末尾行,后面没有换行符,没有残留\r,因此输出正常。
解决方法
第一步:清理数组元素的无效字符
修改文件内容分割逻辑,兼容跨系统换行格式,同时清理元素首尾的空白字符:
// Get LTLAs from file var fs = require("fs"); var text = fs.readFileSync("./LTLAs.txt", 'utf8'); // 正则匹配两种换行格式,trim清除首尾空白(包括\r、空格等) var LTLAs = text.split(/\r?\n/).map(item => item.trim());
第二步(可选优化):URL参数编码
拼接URL时对参数值做编码处理,避免名称中的空格、特殊符号导致URL格式不合法:
for (let i = 0; i < LTLAs.length; i++) { // 对areaName的值做URL编码 const areaName = encodeURIComponent(LTLAs[i]); const endpoint = `https://api.coronavirus.data.gov.uk/v1/data?filters=areaType=ltla;areaName=${areaName}&structure={"ltla":"areaName","date":"date","Rate":"newCasesBySpecimenDateRollingRate"}`; console.log(endpoint); }
修改后运行即可得到所有格式统一的输出结果。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

