.includes()在一个对象的一部分上

时间:2017-10-06 08:10:58

标签: javascript ecmascript-7

所以我有一个目标对象。而且我想看看里面是否有一个特定的目标。

我这样做:

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

导致错误包含的类型对象不存在。

但是如果我想检查一个特定的对象属性呢?让我们说我想检查目标的评论是否与对象中的一个目标评论相匹配。那可能是对的吗?通过它循环吗?

image with the object

但如果我在其间添加.comment,则表示注释在类型对象上不存在。

2 个答案:

答案 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);
        }