如何从数组对象中删除大括号和双引号

时间:2020-06-12 09:33:27

标签: javascript arrays angular typescript

在这个项目中,我使用Angular 8和打字稿。

我有一个数组,用于在输入类型或csv上传时显示电子邮件。 输入一些电子邮件后,就会有一个按钮向这些邮件发送邀请。

我将使用以下代码将电子邮件加载到数组中(this.emails是设置为emails: string[] = [];并通过html中的ngfor循环调用的数组的标识符)

 onFileInput($event: any): void {
    const files = $event.target.files as File;

    this.csvService
      .parse(files[0], { header: false })
      .pipe()
      .subscribe((result: Array<any>) => {
        this.emails = result;
      });
  }

这可以正常工作,因为它将电子邮件添加到阵列中。但是,当我使用邀请功能时,它将数组中的电子邮件标识为{“ email@test.de”},而实际上应该只是email@test.de。

更奇怪的是,该数组实际上仅显示email@test.de。当通过输入输入电子邮件时,邀请功能正确地将其标识为email@test.de

所以问题似乎在于,使用上述代码加载到数组中的实际上不是纯字符串

该数组将csv导入的电子邮件记录为email: Array [ "email@test.de" ],而将类型输入邮件记录为email: "email@test.de"(应该如此)

那么有没有一种方法可以修改函数以在花括号和双引号进入数组之前将其删除?

1 个答案:

答案 0 :(得分:0)

您可以使用regExpr删除{}和[]

this.csvService
  .parse(files[0], { header: false })
  .pipe(
     map((emails:any[])=>
         emails.map((email:string)=>email.match(/([\[{]).+([\]}])/)?
                      email.match(/([\[{]).+([\]}])/)[0].slice(1,-1):
                      email
       )
     )
  )