2017-10-06 31 views
0

所以我有一个目标的对象。我想看看里面是否有一个特定的目标。.includes()对象的一部分

我这样做:

for (let i = 0; i < this.goalsHome.length; i++) { 
    console.log(this.goalsHome[i].includes(goal)); 
} 

导致的错误包括:不存在类型的对象上。

但是如果我想检查一个特定的对象属性?假设我想检查目标的评论是否与对象中的某个目标评论匹配。那应该是可以的吧?通过循环槽?

image with the object

但如果我在两者之间,它说评论不类型的对象上不存在添加.comment

回答

2

你可能想检查数组中是否有一个对象与注释匹配的目标评论。如果这是你想要做的,你可以做

this.goalsHome.filter(goalHome => goalHome.comment === goal.comment); 

如果你想查找所有匹配的对象。 (见MDN Web Docs

如果你想知道单个匹配是否存在,你可以使用Array.prototype.some()这样的方法;

this.goalsHome.some(goalHome => goalHome.comment === goal.comment); 

如果在阵列中的一个ATLEAST匹配(参见MDN Web Docs),其将返回true。

+0

不幸的是,这也不起作用。我得到这个错误: 属性'评论'不存在类型'对象'。 :( – Sanne

0

我结束了使用stringify。

let goalFound = false; 
let goalsSide; 

    if (side == 'home') { 
     goalsSide = this.goalsHome; 
    } else { 
     goalsSide = this.goalsAway; 
    } 

for (let i = 0; i < goalsSide.length; i++) { 
      let stringGoals = JSON.stringify(goalsSide[i]); 
      let stringGoal = JSON.stringify(goal); 

      if (stringGoals == stringGoal) { 
       goalFound = true; 
       break; 
      } 
     } 

     if (goalFound != true) { 
      this.addGoalToArray(goal, side); 
     }