所以我有一个目标对象。而且我想看看里面是否有一个特定的目标。
我这样做:
for (let i = 0; i < this.goalsHome.length; i++) {
console.log(this.goalsHome[i].includes(goal));
}
导致错误包含的类型对象不存在。
但是如果我想检查一个特定的对象属性呢?让我们说我想检查目标的评论是否与对象中的一个目标评论相匹配。那可能是对的吗?通过它循环吗?
但如果我在其间添加.comment
,则表示注释在类型对象上不存在。
答案 0 :(得分:2)
您可能想要检查数组中是否有一个对象与目标注释匹配。如果这是你想要做的,你可以做
this.goalsHome.filter(goalHome => goalHome.comment === goal.comment);
如果要查找所有匹配的对象。 (见MDN Web Docs)
如果您想知道单个匹配是否存在,您可以使用Array.prototype.some()
方法,如此;
this.goalsHome.some(goalHome => goalHome.comment === goal.comment);
如果数组中至少有一个匹配,则返回true(参见MDN Web Docs)。
答案 1 :(得分: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);
}