如何动态添加对象到数组里,同时也动态删除?

有多个标签,如图,多选会放在labelEleParams这个数组里存着。每点一次就往里加一次。
这个好说就push(),问题是例如点击标签一,如何从labelEleParams删除数组中已存在的对象。添加也存在问题,因为每添加一次就是在labelEleParams再找一遍,看有没有重复的,有重复就删除。请大神指点一下。
如何动态添加对象到数组里,同时也动态删除?

json

   labelData: [

{ id: 101, labelNum: "000", labelName: "标签一", },

{ id: 102, labelNum: "000", labelName: "标签二", },

{ id: 103, labelNum: "000", labelName: "标签三", },

{ id: 104, labelNum: "000", labelName: "标签四", },

{ id: 105, labelNum: "000", labelName: "标签五", },

],

页面

     <div v-for="(item, index) in labelData" :key="index">

<div class="flex col labelContent" ref="labelEle" @click="handleActive(item, index)">

<div class="labelNum">{{ item.labelNum }}</div>

<div class="labelName">{{ item.labelName }}</div>

</div>

</div>

方法:

handleActive(ele, i) {

if (this.labelEleParams.length != 0) {

this.labelEleParams.forEach((item, index, array) => {

if (item.id == ele.id) {

// 删除不掉

} else {

//这里选多了标签会成倍数push到labelEleParams中

this.labelEleParams.push(ele)

}

})

} else {

this.labelEleParams.push(ele)

}

console.log("? ~ file: comBatMap.vue ~ line 270 ~ handleActive ~ this.labelEleParams", this.labelEleParams)

},


回答:

用 findIndex 找对应的下标,如果找到了,就根据下标移除掉,然后始终 push 。

const existsIndex = this.labelEleParams.findIndex(it => it.id == ele.id)

if(existsIndex !== -1){

this.labelEleParams.splice(existsIndex, 1);

}

this.labelEleParams.push(ele)


回答:

let index = this.labelEleParams.findIndex(item => item.id == ele.id)

if(index > -1){

this.labelEleParams.push(ele)

}else{

this.labelEleParams.splice(index, 1)

}


回答:

handleActive(ele, i) {

if (this.labelEleParams.length != 0) {

const index = this.labelEleParams.findIndex(item => item.id === ele.id)

if (index >= 0) { // 如果已存在,则删除

this.labelEleParams.splice(index, 1)

}

this.labelEleParams.push(ele)

console.log("? ~ file: comBatMap.vue ~ line 270 ~ handleActive ~ this.labelEleParams", this.labelEleParams)

},

以上是 如何动态添加对象到数组里,同时也动态删除? 的全部内容, 来源链接: utcz.com/p/933289.html

回到顶部