话不多说上代码:
<div class="item-i" v-for="(ite,index) in item.items"
:key="index" v-if="ite.teType == `0`"
:class="{checked:item.num == index}"
:data-value="ite.item.split(`,`)[1]"
:data-secondid="item.id"
:data-teType="ite.teType"
:data-result="ite.item.split(`,`)[0]"
@click="selected(i,index,$event)">{{ite.item.split(",")[0]}}</div>
mydOption:{
items:[]
}
methods: {
selected(a,index,e){
console.log(e.target.getAttribute('data-value'));
console.log(e.target.getAttribute('data-secondid'));
console.log(e.target.getAttribute('data-teType'));
console.log(e.target.getAttribute('data-result'));
let objs ={
"secondId":e.target.getAttribute('data-secondid'),
"score":e.target.getAttribute('data-value'),
"teType":e.target.getAttribute('data-teType'),
"result":e.target.getAttribute('data-result')
};
let Score = null;
this.mydOption.items = this.unique(this.mydOption.items,objs)
},
unique(arr,objs) {
var res = arr.some(item=>{
//console.log(item,objs.secondId)
if(item.secondId==objs.secondId){
return true
}
})
console.log(res) // 如果arr数组对象中含有item.secondId,就会返回true,否则返回false
if(res){ // 如果存在
var index = arr.findIndex(function(item) {
return item.secondId === objs.secondId;
});
console.log(index);//找到相同ID对象的index
arr1.splice(index,1,objs) //去重,替换数组
}else{
arr.push(objs)
}
return arr
},
submit(){
console.log(JSON.stringify(this.mydOption));
}
},
总结:先判断数组中是否存在相同ID的对象,存在用splice(index,1,objs) 替换掉,不存在直接arr1.push(objs)