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