我試圖將一列中的所有數字添加到一個變數中。問題是我的代碼在添加字串,結果是NaN.
。span class="hljs-keyword">var csvData=[];
let test = 0;
var parser = parse({delimiter: ','}, function(err, data){
});
fs.createReadStream(__dirname '/test2.csv','utf16le').pipe(決議器
.on('data', function(csvrow) {
csvData.push(csvrow)。
test = test (csvrow[2] )。
})
.on('end',function() {
console.log(test)
});
給我的是:"0Daily Device Installs00001000101100",如果我加上parseInt(csvrow[2]),我將得到測驗的NaN。
我的目標是在每日設備安裝量之后添加所有的數字,我錯過了什么?
uj5u.com熱心網友回復:
我對Node.js CSV包做了一點研究。
使用頭檔案
如果你的CSV檔案包含一個標題行,就像GrafiCode的評論中所說的那樣,就像這個例子:"Day"/span>,"Daily Device Installs"
"2021-09-15",1。
"2021-09-16",1。
那么CSV決議器有一個功能,就是使用帶有列名的標題行。
參見columns選項。
好處:
- 記錄頁眉
- 映射列名(在代碼中簡單使用)
- 使用它來使你的代碼干凈&有表現力 。
- 防止輸入的CSV中的列序變化 。
span class="hljs-keyword">var csvData=[]。
let test = 0;
// options: use default delimiter comma and map header.
let parser = parse( {
columns: header =>/span>
header.map( column => {
console.log(column)。
//也可以映射(例如類似于Snake_Case)。
return column.replace(/g,"_") 。
})
}
function addToCounter(value) {
if (!isNaN(value))
console.log("WARN: not a number: "/span>, value)
return;
test = value。
}
//從檔案中讀取; test = value; }
fs.createReadStream(__dirname '/test2.csv','utf16le').pipe(parser
.on('data', function(csvrow) {
csvData.push(csvrow)。
addToCounter(csvrow.Daily_Device_Installs); //列名用下劃線映射。
})
.on('end',function() {
console.log(test)
});
注意:
- 我把反增量提取到了一個函式中。
- 你的
csvData陣列現在為每一行包含一個物件(以列名為鍵),而不是一個列的陣列。
uj5u.com熱心網友回復:
嘗試
if(! isNaN(csvrow[2])) test = csvrow[2] 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328050.html
標籤:
