【问题标题】:Prevent pushing duplicate object in array in Angular防止在Angular中的数组中推送重复对象
【发布时间】:2020-07-06 06:49:31
【问题描述】:

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

ngOnChanges() {
  this.adminsGroup.map(a => {
    this.authService.getSpecUser(a.user).subscribe(
      data => {
        data.position = a.permissions;
        this.admins.push(data);
      }
    )
  });
}

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

【问题讨论】:

    标签: javascript angular


    【解决方案1】:

    根据数据中的特定属性(例如“id”)检查唯一性。

    if (!this.admins.some(el => el.id === data.id)) {
      this.admins.push(data);
    }
    

    【讨论】:

      【解决方案2】:

      如果数据有唯一的 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-17
        • 2020-10-04
        • 2019-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-04
        • 2020-12-09
        相关资源
        最近更新 更多