猿问

防止在Angular中的数组中推送重复对象

我有一个子组件,它通过@Input()父组件(对象数组)接收数据。我映射该数据并将对象推送到来自 ngOnChanges 钩子中的输入数据数组的每个对象的新数组中。我的目标是防止重复对象被推入新数组。每次 ngOnChanges 触发时,都会将新对象推送到admins数组中。我尝试some在 if 语句中使用方法,但没有帮助。这是我的 OnChanges 钩子:


ngOnChanges() {

  this.adminsGroup.map(a => {

    this.authService.getSpecUser(a.user).subscribe(

      data => {

        data.position = a.permissions;

        this.admins.push(data);

      }

    )

  });

}

所以我想确保在推送之前没有数组data。this.admins任何帮助,将不胜感激。


幕布斯7119047
浏览 124回答 2
2回答

largeQ

检查数据中的特定属性说“id”的唯一性。if (!this.admins.some(el => el.id === data.id)) {  this.admins.push(data);}

泛舟湖上清波郎朗

如果数据有一个唯一的 ID,你可以这样做:let foundAdmin = this.admins.find(admin => admin.id == data.id);if (foundAdmin == null)    this.admins.push(data);如果没有:let foundAdmin = this.admins.find(admin => JSON.stringify(admin) === JSON.stringify(data));if (foundAdmin == null)    this.admins.push(data);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答