papaparse не разбирает полные данные - PullRequest
0 голосов
/ 23 февраля 2019

Я создаю приложение реакции, которое выбирает и отображает некоторые данные файла CSV из общей папки.Мой контейнер реагирования выглядит следующим образом:

import React, { Component } from 'react'
import * as Chart from "chart.js";
import { connect } from 'react-redux'
import { Bar } from 'react-chartjs-2'
import * as actions from "../actions"
import * as Papa from 'papaparse'

function mapStateToProps({stats}) {
  return {
    data: stats.data
  }
}

class Stats extends Component {
  fetchCsv(fileName) {
    return fetch(fileName).then(function (response) {
      let reader = response.body.getReader();
      let decoder = new TextDecoder('utf-8');

      return reader.read().then(function (result) {
        return decoder.decode(result.value);
      });
    });
  }

  constructor(props){
    super(props);
  }

  async componentDidMount() {

    let PlayerArray = [], BallByBallArray = [], MatchArray = [],
      PlayerMatchArray = [], SeasonArray = [], TeamArray = [];

    let PlayerMatchData = await this.fetchCsv("Player_Match.csv");

    Papa.parse(PlayerMatchData, {
      complete: function(results) {
        console.log("Finished:", results.data);
        PlayerMatchArray = results.data;
        console.log("entries.length: " + results.data.length);
      }
    });
  }

  render() {
    return (
      <div>

      </div>
    )
  }
}

export default connect(
  mapStateToProps, actions
)(Stats)

При этом выполняется выборка содержимого файла Player_Match.csv с использованием функции fetchCsv асинхронно и сохранение его в переменной PlayerMatchData.

Затем PlayerMatchData анализируетсяpapaparse.Проблема в том, что в файле содержится 12700 записей , и он только извлекает 3776 записей в Google Chrome.

Кроме того, странным образом он извлекает 1660записи в Firefox

Любой вклад будет оценен.:)

Редактировать: Ссылка на данные: https://www.kaggle.com/harsha547/indian-premier-league-csv-dataset#Player_Match.csv

1 Ответ

0 голосов
/ 23 февраля 2019

Хорошо, я получил ответ.Как сообщает @SergiuParaschiv reader.read() читает только один кусок данных.Поэтому я вместо этого использовал функцию fetch для выполнения задачи.Не было проблем при разборе.

await fetch("Player_Match.csv")
  .then(response => response.text())
  .then(text => {
    PlayerMatchData = text;
    // console.log(text)
  })

Это выполнит задачу.

...