猿问

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

我用来papaparse读取 csv 文件,然后将该文件转换为对象数组。我用来react-dropzone上传文件,然后将其转换为对象数组。但我需要所有标题均为小写,某些列之间没有空格才能以数组形式存储数据。


这是我的 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,不确定它是如何完成的


陪伴而非守候
浏览 144回答 1
1回答

蓝山帝景

在第二个参数中,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;});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答