我有一个select和rowData[]当我单击Add按钮时,我将名称和值添加到使用函数.push的表中。用于将数据添加到JSON数组中,但我不想添加重复的值。
addItem () {
var equipos_torneo = {
id_torneo: this.id_torneo,
id_equipo: this.id_equipo,
nombre_equipo: nombre_team,
}
this.rowData.push(equipos_torneo)
console.log(equipos_torneo.id_equipo)
},
}
表:
<tbody>
<tr
v-for="item in rowData"
:key="item.id_torneo"
>
<td>{{ item.id_torneo }}</td>
<td>{{ item.id_equipo }}</td>
<td>{{ item.nombre_equipo }}</td>
</tr>
</tbody>
我想我理解这个问题是问如何防止在数组中有重复值的对象的推送。
请在按压前找出(与find
)。addItem() {
let equipos_torneo = {
id_torneo: this.id_torneo,
id_equipo: this.id_equipo,
nombre_equipo: nombre_team,
};
let exists = this.rowData.find(el => el.id_equipo === equipos_torneo.id_equipo);
if (!exists) this.rowData.push(equipos_torneo);
}
在压入rowData[]之前,需要检查是否有类似的值。.
我建议这样做:
addItem(){
let duplicates=[]
var equipos_torneo = {
id_torneo: this.id_torneo,
id_equipo: this.id_equipo,
nombre_equipo: nombre_team,
}
this.rowData.forEach((element, index)=>{
if(element.id_torneo===equipos_torneo.id_torneo){
duplicates.push(index)
}
else if(element.id_equipo===equipos_torneo.id_equipo){
duplicates.push(index)
}
else if(element.nombre_equipo===equipos_torneo.nombre_equipo){
duplicates.push(index)
}
else{
this.rowData.push(equipos_torneo)
}
})
}
这样你只会推送到rowData[]只要没有重复。如果有任何重复项,您可以在duplicate []中找到它们。