Javascript 基于验证将元素推送到对象

Javascript 基于验证将元素推送到对象,javascript,arrays,reactjs,object,Javascript,Arrays,Reactjs,Object,所以,我有一个对象,thumbnailsAtivas,我想根据一些验证向它添加元素,所有元素都是相同类型的。如果它已经有元素元素,它将返回第一个控制台日志,然后我循环遍历我的对象,我想知道在我的thumbnailsAtivas中是否有与元素标签相同的缩略图,然后才将元素添加到我的对象中 我已经试过了,但是对象返回总是空的,我得到了第二个控制台日志。我用react if (this.state.thumbnailsAtivas.includes(element)) { co

所以,我有一个对象,thumbnailsAtivas,我想根据一些验证向它添加元素,所有元素都是相同类型的。如果它已经有元素
元素
,它将返回第一个控制台日志,然后我循环遍历我的对象,我想知道在我的
thumbnailsAtivas
中是否有与
元素
标签相同的
缩略图
,然后才将
元素
添加到我的对象中

我已经试过了,但是对象返回总是空的,我得到了第二个控制台日志。我用react

    if (this.state.thumbnailsAtivas.includes(element)) {
        console.log("already added")
    }
    else if (this.state.thumbnailsAtivas.map(thumbnail => {
        thumbnail.label.includes(element.label)
    })) {
        console.log("label already selected")
    }
    else {
        this.setState({thumbnailsAtivas: [...this.state.thumbnailsAtivas, textura]},
            () => console.log(this.state.thumbnailsAtivas));
    }
};
您提到“thumbnailsAtivas”是一个对象,因此我们将从字面意义上理解它。“.includes”是专门用于阵列的原型。要检查您的值,请尝试使用“hasOwnProperty”


如注释中所述,由于要检查对象数组中是否存在对象,因此应使用
some

if (this.state.thumbnailsAtivas.some(thumbnail => thumbnail.index === element.index)) {
    console.log("already added");
} else if (this.state.thumbnailsAtivas.some(thumbnail => thumbnail.label === element.label)) {
    console.log("label already selected");
}
else {
    // ...
}
也就是说,您基本上是在检查
this.state.thumbnailsativa中是否存在与
元素具有相同
索引的
缩略图。对于
标签
,第二个
如果
,则相同


注意:使用
==
localeCompare
(其结果在成功返回
0
时必须反转)来比较字符串,而不是
包括
。然后加上分号。

那么,你的拇指指甲是如何构造的呢?它有对象吗?我正在初始化它有一个emty数组对象吗?如果是这样,我认为您不能在这里使用
。includes
。那么,我应该在这里使用什么?我不在乎位置,我只需要找到stringAs@ibrahimmahrir,你应该使用其他方法来检查元素。现在,新的问题是“你的元素是如何构造的?”同样如前所述,它是否有id或任何其他你可以检查的东西?现在我对与你的答案相关的东西有问题,如果你能看一下,我将非常感谢:
if (this.state.thumbnailsAtivas.some(thumbnail => thumbnail.index === element.index)) {
    console.log("already added");
} else if (this.state.thumbnailsAtivas.some(thumbnail => thumbnail.label === element.label)) {
    console.log("label already selected");
}
else {
    // ...
}