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

时间:2018-04-18 11:10:45

标签: javascript arrays reactjs object

所以,我有一个对象,thumbnailsAtivas,我想根据一些验证向它添加所有相同类型的元素。如果它已经有元素Par -> a -> c,它将返回第一个控制台日志,然后我遍历我的对象,我想知道我的element内是否有thumbnailthumbnailsAtivas相同label,然后将element添加到我的对象。

我试过这个,但是对象返回总是为空,我得到第二个控制台日志。我正在使用反应。

element

2 个答案:

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