2017-10-06 6 views
0

私は目標のオブジェクトを持っています。そして、私はある特定の目標が内部にあるかどうかを見たいと思います。。オブジェクトの一部に.includes()

私はこれをやっている:含まれるが、型オブジェクト上に存在しないエラーが発生し

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

しかし、どうすれば特定のオブジェクトプロパティをチェックしたいのですか?目標のコメントがオブジェクトの目標のコメントの1つと一致するかどうかを確認したいとします。それは可能でしょうか?それをループすることによって?

image with the object

しかし、私はそれはコメントが型オブジェクト上に存在しないと言う間に.commentを追加する場合。

答えて

2

目的のコメントに一致するコメントを持つオブジェクトが配列内に存在するかどうかを確認することをお勧めします。これがあなたがしたいと思っている場合は、

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

すべての一致するオブジェクトを検索したい場合は。 (MDN Web Docsを参照してください)

1つの一致が存在するかどうかを知りたい場合は、Array.prototype.some()のような方法を使用できます。配列内の少なくとも1つの試合は(MDN Web Docsを参照)がある場合にtrueを返します

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

+0

悲しいことに、どちらもうまくいきません。このエラーが発生しました: プロパティ 'comment'は 'オブジェクト'タイプに存在しません。 :( – 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); 
     } 
関連する問題