微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 的新手,不确定它是如何完成的

解决方法

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;
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。