我有一个子组件,它通过@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任何帮助,将不胜感激。
2 回答

largeQ
TA贡献2039条经验 获得超8个赞
检查数据中的特定属性说“id”的唯一性。
if (!this.admins.some(el => el.id === data.id)) {
this.admins.push(data);
}

泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
如果数据有一个唯一的 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);
添加回答
举报
0/150
提交
取消