Или, если сформулировать вопрос иначе: почему ParseResult.data
PapaParse является пустым массивом при обрезке всех начальных и конечных пустых ячеек во время функции Papa.step()
? РЕДАКТИРОВАТЬ: Обратите внимание, что я могу достичь того, что я хочу, сопоставляя проанализированные результаты и обрезку, но я не хочу анализировать и затем отображать, я бы предпочел сделать все это в одном go.
Пример CSV:
Col 1,Col 2,Col 3
1-1,1-2,
,2-2,2-3
3-1,3-2,3-3
Обратите внимание, что строка 1 содержит заголовки (столбец 1, столбец 2 и т. Д. c). Строка 2, столбец 3 пуста, а строка 3, столбец 1 пуста.
Учитывая, что CSV, я хочу представить это обратно пользователю (в виде красиво отформатированной таблицы):
| | | |
|-----|-----|-----|
| 1-1 | 1-2 | |
| 2-2 | 2-3 | |
| 3-1 | 3-2 | 3-3 |
Я хочу набрать sh все строки как можно дальше влево go и удалить все пустые ячейки в конце каждой строки.
Другими словами, я хочу обрезать все пустые ячейки в начале и конце каждой строки. Ниже приведен код, который я использую. Я поместил отладчики в trimEmptyCells
, и он работает точно так, как ожидалось. Однако ParseResult, который возвращает parseAndTrim
, содержит пустой массив data
.
export const parseAndTrim = (csv: string): Papa.ParseResult => {
return Papa.parse(csv, {
skipEmptyLines: true,
step: trimEmptyCells,
})
};
const trimEmptyCells = (results: Papa.ParseResult) => {
// Note that `_.dropWhile` and `_.dropRightWhile` are [lodash
// functions](https://lodash.com/docs/4.17.15#dropRight).
const leftTrimmed = _.dropWhile(results.data, (r) => r === "");
return _.dropRightWhile(leftTrimmed, (r) => r === "");
};
Моим первым предположением было то, что PapaParse испытывал ошибки с массивами различной длины, но массив errors
также пуст , Таким образом, я протестировал то, что мог (без функции step
) на https://www.papaparse.com/demo, используя приведенный ниже пример, и просто наличие пропущенных ячеек (не просто пустых) не выдает ошибок и возвращает правильное значение data
массив.
Пример тестового ввода при https://www.papaparse.com/demo
Col 1,Col 2,Col 3
1-1,1-2
,2-2,2-3