为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

陪伴而非守候 2024-01-18 20:40:39
我用来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,不确定它是如何完成的
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

在第二个参数中,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;

});


查看完整回答
反对 回复 2024-01-18
  • 1 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信