J'ai une situation où un utilisateur peut télécharger un fichier csv. Ce fichier CSV contient beaucoup de données, mais je ne suis intéressé que par 2 colonnes (ID et Date). En ce moment, j'analyse le CSV en utilisant Papaparse
let ID = this.selectedIdCol;
this.parsed_csv = results.data.map(element => ({ID: element.ID, Date: element.Date}));
Quand ceci est exécuté this.parsed_csv représente des objets de données saisis par le nom du champ. Donc, si je JSON.stringify la sortie est quelque chose comme ça
[
{
"ID": 123456,
"Date": "2012-01-01",
"Irrelevant_Column_1": 123,
"Irrelevant_Column_2": 234,
"Irrelevant_Column_3": 345,
"Irrelevant_Column_4": 456
},
...
]
Donc ma question principale est de savoir comment puis-je me débarrasser des colonnes dont je n'ai pas besoin , et juste produire un nouveau csv contenant l'ID et la date des colonnes?
Merci
Une chose que j'ai réalisé, y a-t-il un moyen d'ajouter des variables dynamiques. Par exemple, je laisse les utilisateurs sélectionner les colonnes que je veux mapper. Maintenant, je dois faire quelque chose comme ça
Papa.parse(ev.data, {
delimiter: "",
newline: "",
quoteChar: '"',
header: true,
error: function(err, file, inputElem, reason) { },
complete: function (results) {
this.parsed_csv = results.data;
}
});
Cela dit que l'ID n'est pas utilisé. Merci
3 Réponses :
data = data.map(element => ({ID: element.ID, Date: element.Date}))
J'ai fait une petite mise à jour concernant l'utilisation des variables dynamiques, comment pourrais-je les utiliser? Merci
Notez que si vous chargez un gros fichier, vous aurez le fichier entier en mémoire juste après l'analyse. De plus, cela peut geler le navigateur en raison de la lourde charge de travail. Vous pouvez éviter cela en lisant et en supprimant les colonnes:
Vous devriez lire la FAQ de Papaparse avant de l'implémenter. Pour résumer, vous allez stocker les colonnes requises en les extrayant des rappels step ou chunk .
Comme Serrurier l'a souligné ci-dessus, vous devez utiliser la fonction step / chunk pour modifier les données plutôt qu'après l'analyse de la carte car les données en mémoire sont déjà disponibles.
PapaParse.parse(file, { skipEmptyLines: true, header: true, step: (results, parser) => {
results.data = _.pick(results.data , [ 'column1' 'column2']);
return results;
}});