【发布时间】:2021-06-06 12:09:01
【问题描述】:
我需要在数组数组中查找一个值,但是当我使用 .find 时它返回 undefined
import { Component, OnInit } from '@angular/core';
import * as XLSX from 'xlsx';
import { ExcelSheetsService } from '../services/excel-sheets.service';
@Component({
selector: 'app-hojaexcel',
templateUrl: './hojaexcel.component.html',
styleUrls: ['./hojaexcel.component.css']
})
export class HojaexcelComponent implements OnInit {
constructor( private excelsheetService: ExcelSheetsService ) { }
ngOnInit(): void {
}
codigo: any = '';
datos: [][] = [];
onFileChange( evt: any ){
const target: DataTransfer = <DataTransfer> (evt.target);
if(target.files.length !== 1) throw new Error ('No se pueden subir varios archivos a la vez');
const reader: FileReader = new FileReader();
reader.onload = ( e: any ) => {
const bstr: string = e.target.result;
const wb: XLSX.WorkBook = XLSX.read( bstr, { type: 'binary' } );
const wsname: string = wb.SheetNames[0];
const ws: XLSX.WorkSheet = wb.Sheets[wsname];
this.datos = (XLSX.utils.sheet_to_json(ws, { header: 1 }));
console.log(this.datos);
return this.datos;
};
reader.readAsBinaryString(target.files[0]);
}
look(): any{
const found = this.datos.find(element => element == this.codigo );
console.log(found);
console.log(this.datos);
}
pasardata(){
this.excelsheetService.impData( this.datos )
.subscribe( resp => {
console.log(resp);
});
}
}
数组的数组是 datos。这是Html:
<p>Subir Archivo excel</p>
<br>
<input type="file" (change)="onFileChange($event)" multiple="false" />
<br>
<button (click)="pasardata()">
Subir a base de datos Firebase
</button>
<br>
<div class="col">
<form (ngSubmit)="look()">
<input type="text" placeholder="Codigo" name="codigo" [(ngModel)]="codigo"/>
<button>Enviar</button>
</form>
</div>
我尝试访问 datos 数组数组,它返回一个空数组,我想使用数组数组显示一个表,然后使用 .find() 获取表的特定值。
【问题讨论】:
-
如果 datos 是一个数组数组,那么您的 this.datos.find(element => element == this.codigo ) 元素将始终是一个数组。但是这个。 codigo 是一个字符串,它永远不会相等。
标签: javascript arrays angular typescript multidimensional-array