では 配列を CSV に変換したり、CSV 文字列を配列に変換したりする小さなユーティリティ関数 を作ってみます。初心者向けにシンプルで使いやすくしています。
1. 配列を CSV 文字列に変換する関数
/**
* 配列を CSV 文字列に変換
* @param {Array} arr - 変換したい配列
* @param {string} delimiter - 区切り文字(デフォルトはカンマ)
* @returns {string} CSV 文字列
*/
function arrayToCSV(arr, delimiter = ',') {
return arr.map(row =>
row.map(item => {
// item にカンマや改行がある場合は "で囲む
if (typeof item === 'string' && (item.includes(delimiter) || item.includes('\n'))) {
return `"${item}"`;
}
return item;
}).join(delimiter)
).join('\n');
}
JavaScript使い方例
const data = [
['名前', '年齢', '都市'],
['太郎', 28, '東京'],
['花子', 22, '大阪'],
['次郎', 35, '名古屋']
];
console.log(arrayToCSV(data));
/* 出力:
名前,年齢,都市
太郎,28,東京
花子,22,大阪
次郎,35,名古屋
*/
2. CSV 文字列を配列に変換する関数
/**
* CSV 文字列を配列に変換
* @param {string} csvStr - CSV 文字列
* @param {string} delimiter - 区切り文字(デフォルトはカンマ)
* @returns {Array} 配列
*/
function csvToArray(csvStr, delimiter = ',') {
return csvStr.split('\n').map(line => {
return line.split(delimiter).map(item => {
// "で囲まれた文字列の "" を置換
if (item.startsWith('"') && item.endsWith('"')) {
return item.slice(1, -1).replace(/""/g, '"');
}
return item;
});
});
}
JavaScript使い方例
const csvData = `名前,年齢,都市
太郎,28,東京
花子,22,大阪
次郎,35,名古屋`;
console.log(csvToArray(csvData));
/* 出力:
[
["名前", "年齢", "都市"],
["太郎", "28", "東京"],
["花子", "22", "大阪"],
["次郎", "35", "名古屋"]
]
*/
3. ちょっと便利な応用例
CSV をダウンロードする関数(ブラウザ用)
function downloadCSV(data, filename = 'data.csv') {
const csvStr = arrayToCSV(data);
const blob = new Blob([csvStr], { type: 'text/csv' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
a.click();
URL.revokeObjectURL(url);
}
JavaScript// 使い方
downloadCSV([
['商品', '価格'],
['りんご', 100],
['バナナ', 200]
]);
ポイント
- 配列の要素が配列(2次元配列)であることが前提
- 区切り文字を自由に変えられる(カンマ以外もOK)
"文字列"にカンマや改行が含まれる場合、自動で"で囲む- ブラウザでは Blob を使って簡単に CSV ダウンロードもできる
