检查Angular 6中的数组中是否存在对象

时间:2018-06-13 18:24:00

标签: angular

我有一系列类别:this.categories

[ { "id": 6, "name": "categories.ladies_team" }, { "id": 2, "name": "categories.junior_team" }, { "id": 7, "name": "categories.master" }, { "id": 5, "name": "categories.ladies_single" }, { "id": 1, "name": "categories.junior" }, { "id": 3, "name": "categories.men_single" }, { "id": 4, "name": "categories.men_team" } ]

现在我有一个新元素:

const newCategory = {
    id: category.id,
    name: category.name
};

如果不存在,我想插入它。

我试过了:

if (!this.categories.includes(newCategory)) {
    this.categories.push(newCategory);
  }

但它不起作用......

我做错了什么?

2 个答案:

答案 0 :(得分:8)

不幸的是,除非它是同一个实例,否则includes将无效。你需要做类似的事情;

if (!this.categories.some((item) => item.id == newCategory.id)) {
    this.categories.push(newCategory);
}

答案 1 :(得分:0)

user184994提供的解决方案对我不起作用,它只是获取第一个元素。我这样尝试过,对我有用。

let data = this.categories.find(ob => ob.id === newCategory.id);
if(data === null){
 this.categories.push(newCategory);
}