首页 > 解决方案 > 在 Typescript 中读取 CSV 在读取数字时会给出 NaN

问题描述

好吧,我正在尝试使用 Typescript 读取 CSV 文件

这是我的代码:

export default class Playlist{
    public playlistId: Number = 0;
    public playlistName: string = '';

    constructor(line:string){
        const item = line.split(',')
        this.playlistId = +item[0];
        this.playlistName = item[1];
    }
}

fs.readFile('.\\csv\\playlist.csv', 'utf8',(err, res) => {
        if(err){
            console.error('YEET');

            return;
        }else{

            const playlists =  res.split('\n').slice(1).map((x:string) => new Playlist(x))
            console.log(playlists)
        }
    })

这是 CSV 数据:

"1","Music"
"2","Movies"
"3","TV Shows"
"4","Audiobooks"

这是我得到的播放列表对象:

Playlist { playlistId: NaN, playlistName: '"Music"\r' },

正如您所看到的 playlistId 我得到 NaN 但我不知道为什么,因为我将它正确解析为一个数字。此外,播放列表的名称也不必采用奇怪的格式。

标签: javascripttypescriptcsv

解决方案


如果您看到您的播放列表名称,它包含一对额外的双引号'"Music"\r'

在你 parse 之前item[0],它也应该看起来像'"1"'并且在你解析它时应该+'"2"'是 NaN。

一个简单的解决方法是将所有引号替换为空字符,有效地将解析更改为+item[0].replace(/\"/g, "")


推荐阅读