React - 使用 papaparse 将一些 csv 列转换为数组

React - Convert some csv columns to array using papaparse

我正在使用 papaparse 读取 csv 文件,然后将该文件转换为 objects 的数组。我正在使用 react-dropzone 上传文件,然后将其转换为 objects 的数组。但是我需要我所有的 headers 都是小写的,一些列之间没有空白 space 以数组形式的数据。

这是我的 csv 文件

| Name | Age | Data one | Data two |
-------|-----|----------|----------|
| John | 23  | A, B     | C        |
-------|-----|----------|----------|
| Jane | 40  | E, F     | G, H     |
-------|-----|----------|----------|

这是我的代码:

import React from "react";
import Dropzone from "react-dropzone";
import Papa from 'papaparse';

const App = () => {
 const handleOnDrop = (acceptedFiles) => {

  // acceptedFiles is the actual file uploaded by user
  Papa.parse(acceptedFiles[0], {
     header: true,
     complete: (results) => {
       console.log(results)
     }
  })
 }
}

OutPut:
[
 {
  Name: "John",
  Age: "23",
  Data one: "A, B",
  Data two: "C"
 },
 {
  Name: "Jane",
  Age: "40",
  Data one: "E, F",
  Data two: "G, H"
 }
]

我需要的输出是:

[
 {
  name: "John",
  age: "23",
  dataone: ["A", "B"], // Each individual data should be a string
  datatwo: ["C"]
 },
 {
  name: "Jane",
  age: "40",
  dataone: ["E", "F"],
  datatwo: ["G", "H"]
 }
]

我是 papaparse 的新手,不确定它是如何完成的

parse的第二个参数中,您可以为键transformHeader提供一个函数来转换列名。例如。 (headerName) => headerName.toLowerCase().replaceAll(' ', '').

第二个问题与papaparse无关。您可以使用 results.map(result => { ...result, dataone: result.dataone.split(', ') }) 并对 datatwo 执行相同的操作。两个列名是预先知道的还是需要动态工作并且需要用逗号应用于所有字符串?

列名在数组中时使用以下代码。

results.map(result => {
  for(const column of columnsToconvertToArray) {
    result[column] = result[column].split(', ');
  }
  return result;
});