Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React-使用papaparse将一些csv列转换为数组_Javascript_Json_Reactjs_Papaparse_React Dropzone - Fatal编程技术网

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

Javascript React-使用papaparse将一些csv列转换为数组,javascript,json,reactjs,papaparse,react-dropzone,Javascript,Json,Reactjs,Papaparse,React Dropzone,我正在使用papaparse读取csv文件,然后将该文件转换为对象数组。我使用react dropzone上传文件,然后将其转换为对象数组。但我需要所有的标题都是小写的,在某些列之间没有空格,以数组的形式显示数据 这是我的csv文件 | Name | Age | Data one | Data two | -------|-----|----------|----------| | John | 23 | A, B | C | -------|-----|--------

我正在使用
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;
});

必须转换为数组的列名是已知的。例如:columnsToconvertToArray=[“dataone”,“datatwo”]。所以我想在papaparse中使用
columnsToconvertToArray
将单元格转换为这些列本身的数组@Michiel@iCodeByte我延长了我的回答。它能满足你的需要吗?是的。这很有效。谢谢