所以,我有一个对象,thumbnailsAtivas,我想根据一些验证向它添加所有相同类型的元素。如果它已经有元素Par -> a -> c
,它将返回第一个控制台日志,然后我遍历我的对象,我想知道我的element
内是否有thumbnail
与thumbnailsAtivas
相同label
,然后将element
添加到我的对象。
我试过这个,但是对象返回总是为空,我得到第二个控制台日志。我正在使用反应。
element
答案 0 :(得分:1)
如评论中所述,由于您正在检查对象数组中是否存在对象,因此您应该使用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 {
// ...
}
这意味着,您基本上要检查thumbnail
中的某些this.state.thumbnailsAtivas
是否与index
具有相同的element
。对于if
,第二个label
也是如此。
注意:使用===
或localeCompare
(成功后返回0
时必须反转的结果)来比较字符串而不是{ {1}}。并添加分号。
答案 1 :(得分:0)
你提到“thumbnailsAtivas”是一个对象,因此将从字面意义上理解它。 “.includes”是一个专门用于数组的原型。要检查您的值,请尝试使用“hasOwnProperty”。
即。
if(this.state.thumbnailsAtivas.hasOwnProperty('elementKey')) { //code }