JavaScript | 配列の全要素を連結して文字列を得る方法

JavaScript JavaScript
スポンサーリンク

では 配列を 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 ダウンロードもできる
タイトルとURLをコピーしました