字符串到数组 (object) Angular TS 12

String to array (object) Angular TS 12

我有一个 CSV 文件(本地),将其转换为字符串,部分字符串如下:

44,"3845657"
51,"3847489"
1,"3888510"
79,"3840471"
57,"3864492"

收到输入数字(第一个值)后,我想将其与第二个值(字符串)匹配。

所以如果输入是 51,我希望能够 return 3847489。 csv 中没有 headers。

CSV 到字符串:

  fetchData() {
    fetch('../../../assets/static/mapping.csv')
      .then(response => response.text())
      .then(data => {
        // Do something with your data
        console.log(data);
        this.mappingCSV = data;
      });
  }

输出:

44,"3845657" 
51,"3847489"
1,"3888510"
79,"3840471"
57,"3864492"

也欢迎其他将 csv 转换为数组的方法 objects,不要与我的 csv 转字符串方法结合。

我在此示例中使用的是 HTTPClient,它是 Angular 中可用的内置服务 class。这里how使用Angular的HTTPClient,让你阅读了解它的好处。

在我的 .ts 文件中,我首先为任何换行符拆分文本转换的 csv。然后我添加了一个循环,其中我用逗号分隔文本并将必要的详细信息推送到新的 csvArray。

export class SampleComponent {
  public csvArr: CsvArray[] = [];
  constructor(private http: HttpClient) {
    this.http.get('assets/csv.csv', {
      responseType: 'text'
    }).subscribe(
      (data) => {
        const csvToRowArray = data.split('\n');
        console.log(csvToRowArray);
        for (let index = 0; index < csvToRowArray.length; index++) {
          const row = csvToRowArray[index].split(',');
          this.csvArr.push(new CsvArray(parseInt(row[0], 10), row[1]));
        }
        console.log(this.csvArr);
      },
      (error) => {
        console.log(error);
      }
    );
  }
}

export class CsvArray {
  id: number;
  text: string;

  constructor(id: number, text: string) {
    this.id = id;
    this.text = text;
  }
}

我创建了一个 stackblitz 以便您可以检查我的实现。