Ich habe einen CSV-Parser erstellt und bin in eine interessante Situation geraten. Wenn die onLoad-Funktion gedrückt wird, wird der letzte Schlüssel meines Objekts row
doppelt zitiert. Ich suche nach einer Erklärung warum. Weiß jemand?Das dynamische Zuweisen von Objektschlüsseln führt dazu, dass der letzte Schlüssel in doppelten Anführungszeichen enthalten ist.
Kommentare enthält Beispielwerte
const results = [];
const lines = reader.result.split('\n');
//lines = ["accountId,nickname,rando", "test-arn,test-nickname,test-rando"]
const keys = lines[0].split(',');
//keys = ["accountId", "nickname", "rando"]
forEach((line) => {
// line = "test-arn, test-nickname, test-rando"
const values = line.split(',');
// values = ["test-arn", "test-nickname", "test-rando"]
const row = {};
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
row[key] = values[i];
}
//row = { accountId: "test-arn", nickname="test-nickname", "rando": "test-rando"}
results.push(row);
}, lines);
Sie können sehen, dass der Schlüssel rando
innerhalb row
durch doppelte Anführungszeichen umgeben ist
row = {
accountId: "test-arn",
nickname: "test-nickname",
"rando": "test-rando",
}
Beispiel CSV
accountId,nickname,rando^M
test-arn,test-nickname,test-rando^M
Full Function
const parseCsv = ({ file, before, onSuccess, onError }) => {
before();
const reader = new FileReader();
reader.readAsText(file);
reader.onload =() => {
const results = [];
const lines = reader.result.split('\n');
const keys = lines[0].split(',');
forEach((line) => {
const values = line.split(',');
const row = {};
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
row[key] = values[i];
}
results.push(row);
}, lines);
onSuccess(results);
};
reader.onError = (error) => {
onError(error);
};
};
und wie die Datei, die Sie aussehen lesen zu entfernen? – caramba
bitte die Datei anhängen – Keerthi
* Sample CSV * Hinzugefügt –