JavaScript 実務レベルの課題 CSVから読み込んだデータの加工

課題

CSVからユーザーデータを読み込んだデータがあります。

[
  ['id', 'name', 'gender'],
  [101, 'たみぼうず', 'male'],
  [102, 'ひとちゃん', 'female'],
  [103, 'ぼっち', 'male'],
];

このデータを以下のように加工したいです。

[{
  gender: "male",
  id: 101,
  name: "たみぼうず"
}, {
  gender: "female",
  id: 102,
  name: "ひとちゃん"
}, {
  gender: "male",
  id: 103,
  name: "ぼっち"
}]

問題を小さくする

元のデータにはCSVのヘッダーが含まれています。

['id', 'name', 'gender']

この部分と、その後の配列(データ部分)を分離する必要があります。

その後、データ部分をmap関数で加工します。

実装例

const users = [
  ['id', 'name', 'gender'],
  [101, 'たみぼうず', 'male'],
  [102, 'ひとちゃん', 'female'],
  [103, 'ぼっち', 'male'],
];

const convertUsers = users => {
  // ヘッダーとデータ部分の分離
	const [headers, ...data] = users; 
  
  // データ部分の加工処理
  return data.map(d => {
  	const parsedData = {};
    for(const [index, header] of headers.entries()){
    	parsedData[header] = d[index];
    }
    return parsedData;
  });
};

const result = convertUsers(users);
console.log(result);