let arr = [1,2,3,4];
let content = arr.map((o) => {
return o + '<br />';
});
fs.writeFile('result.html', content, (err)=> {
if (err) {
return console.error(err);
}
console.log("数据写入成功!");
console.log("--------我是分割线-------------")
});
输出的结果
1
,2
,3
,4
在浏览器审查元素看了一下,不知怎么的,在我数组每个元素前面加了个,,这个怎么去掉?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
因为你在存的时候content 仍然是一个数组。而fs.write第二个参数要求类型是string或者buffer,数组的话会自动调用他的toString方法。
这段代码可以直接这么写
content的内容是 ['1<br/>','2<br/>','3<br/>']
执行writefile会尝试给内容执行.toString()
即"1<br/>,2<br/>,3<br/>"
这貌似是因为你在使用
writeFile的时候,函数直接将数组content字符串化了,在js里数组默认的字符串化方法会将每一个元素字符化过后用,拼在一起。所有要去掉的话,一个元素一个元素的写进文件就好了。
fs.write第二个参数要求类型是string或者buffer,这里传入的是数组,自动转换成字符串时会调用数组的toString方法,而toString又会调用数组的join方法,join在无参时默认用逗号做分隔符拼接数组元素,这就是整个事情的过程。
解决办法,你可以重写数组的toString或者join方法(如果在你的系统里通用),或者自行拼接字符串。
建议先学会调试吧,不然以后你经常会在这种小问题上被坑。