Получить первый массив в объекте длиной X - PullRequest
0 голосов
/ 07 января 2020

Я импортирую файл Excel в веб-приложение с использованием библиотеки xlsx, и каждая строка в листе Excel сохраняется в объекте, содержащем массивы, длина которых равна числу ячеек в каждой строке, как показано ниже ...

onFileChange(event: any) {
    const inputFile: DataTransfer = <DataTransfer>(event.target); 
    const fileReader: FileReader = new FileReader();
    fileReader.onload = (event: any) => {
      const binaryString: string = event.target.result;
      const workBook: XLSX.WorkBook = XLSX.read(binaryString, { type: 'binary', sheetStubs: true}); 
      /* sheetstubs true supposedly shows empty cells but isn't */
      console.log(typeof binaryString)

      const workSheetName: string = workBook.SheetNames[0];
      console.log(workSheetName)
      const workSheet: XLSX.WorkSheet = workBook.Sheets[workSheetName];

      this.data = <Array>(XLSX.utils.sheet_to_json(workSheet, { header: 1, blankrows: true }));


    };
    fileReader.readAsBinaryString(inputFile.files[0]);

  }

пробуя это ниже

Я пытаюсь создать еще одну функцию getFirstMeaningfulRow, которая выдала бы первый ряд длиной> = 5, скажем, будет for-loop подходящий метод, чтобы выполнить это?

using the `find` function
```typescript
getFirstMeaningfulRow() {
    console.log(this.data.find(meaningfulRow => this.data.length >= 5

выплевывает первый массив, содержащий строку, содержащую более пяти символов. Пример.

first row imported contains one element, a date MM/DD/YYY so console.log shows

["10 SEPTEMBER, 2019"]
 0: "10 SEPTEMBER, 2019"

Я пытаюсь найти первый массив в объекте с более чем 5 элементами в этом массиве, чтобы console.log показывал:

['item0', 'item1', 'item2', 'item3', 'item4',...]
  0: 'item0'
  1: 'item1'
  2: 'item2'
  3: 'item3'
  4: 'item4'
     ...

1 Ответ

2 голосов
/ 07 января 2020

Я думаю, вы намеревались использовать meaningfulRow вместо this.data.

Вы сравниваете длину массива, а не длину элемента.

  getFirstMeaningfulRow() {
       console.log(this.data.find(x=> x.length >= 5))
   }

...