iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
自我挑戰組

利用30分鐘~想一個前端問題系列 第 19

利用30分鐘~想一個前端問題 Day19-arrayToCSV

arrayToCSV

Converts a 2D array to a comma-separated values (CSV) string.

Use Array.prototype.map() and Array.prototype.join(delimiter) to combine individual 1D arrays (rows) into strings.
Use Array.prototype.join('\n') to combine all rows into a CSV string, separating each row with a newline.
Omit the second argument, delimiter, to use a default delimiter of ,.

將二維陣列轉換為逗號分隔值( csv )字串。

1.使用 Array.prototype.map () 和 Array.prototype.join(delimiter) 將一維陣列組合成字串。
2.使用 Array.prototype.join('\n') ( ,換行符號)兩個組合的全行到 CSV 格式字串,每排分撿和一個換行符。
3.在第二 omit 引數delimiter ,使用 delimiter(預設)。

const arrayToCSV = (arr, delimiter = ',') =>
  arr
    .map(v => v.map(x => (isNaN(x) ? `"${x.replace(/"/g, '""')}"` : x)).join(delimiter)).join('\n');
   
    

    
//EXAMPLES
arrayToCSV([['a', 'b'], ['c', 'd']]); // '"a","b"\n"c","d"'
arrayToCSV([['a', 'b'], ['c', 'd']], ';'); // '"a";"b"\n"c";"d"'
arrayToCSV([['a', '"b" great'], ['c', 3.1415]]); // '"a","""b"" great"\n"c",3.1415'

### 分析點

1. CSV 格式

數據格式的一種,常在 excel 看到的一種檔案格式,CSV 就是「用逗號分隔值」( Comma-Separated Value )。

從這樣

image

變成像是這樣

sex,name,score
male,Jack,88
female,Marry,65
female,Cherry,74
male,Owen,95
male,Jason,87

2. replace()

replace 方法用來將字串中的字取代為另一個字。
正規表示式替換變數函式:

stringObj.replace(RegExp,replace Text);

\n 一個換行符
g: 全域性匹配

3.join()

就是把陣列元素用指定的分隔符號 切成字串

var ary = ['A', 'B', 'C'];

// 輸出 'A,B,C'
console.log(ary.join());

// 輸出 'ABC'
console.log(ary.join(''));

參考文章

1.Array.prototype.join()


上一篇
利用30分鐘~想一個前端問題 Day18-pull
下一篇
利用30分鐘~想一個前端問題 Day20-orderBy
系列文
利用30分鐘~想一個前端問題30

尚未有邦友留言

立即登入留言