javascript - Node.js 数组写入文件,自动追加的逗号,怎么去掉?
阿神
阿神 2017-04-11 09:19:56
[JavaScript讨论组]
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

在浏览器审查元素看了一下,不知怎么的,在我数组每个元素前面加了个,,这个怎么去掉?

阿神
阿神

闭关修行中......

全部回复(7)
高洛峰

因为你在存的时候content 仍然是一个数组。而fs.write第二个参数要求类型是string或者buffer,数组的话会自动调用他的toString方法。

console.log([1,2,3,4].toString())

这段代码可以直接这么写

let arr = [1,2,3,4];
fs.writeFile('result.html', arr.join('<br />')+'<br />', (err)=> {
   if (err) return console.error(err);
   console.log("数据写入成功!");
   console.log("--------我是分割线-------------")
});
高洛峰

content的内容是 ['1<br/>','2<br/>','3<br/>']
执行writefile会尝试给内容执行.toString()
即"1<br/>,2<br/>,3<br/>"

伊谢尔伦

这貌似是因为你在使用writeFile的时候,函数直接将数组content字符串化了,在js里数组默认的字符串化方法会将每一个元素字符化过后用,拼在一起。
所有要去掉的话,一个元素一个元素的写进文件就好了。

伊谢尔伦
let content = ''
arr.forEach((o) => {
        content += o + '<br />';
});
怪我咯

fs.write第二个参数要求类型是string或者buffer,这里传入的是数组,自动转换成字符串时会调用数组的toString方法,而toString又会调用数组的join方法,join在无参时默认用逗号做分隔符拼接数组元素,这就是整个事情的过程。
解决办法,你可以重写数组的toString或者join方法(如果在你的系统里通用),或者自行拼接字符串。

怪我咯
fs.writeFile('result.html', content.join(''), ……
迷茫

建议先学会调试吧,不然以后你经常会在这种小问题上被坑。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号