迴圈下splice刪除多個陣列索引項

2021-10-13 13:19:37 字數 1002 閱讀 3113

我的需求是陣列選擇刪除掉相應資料,後台需要我返回字串連線的資料,替換修改。

<

el-checkbox-group

v-model

="checklist"

@change

="handlecheckedcitieschange"

>

<

el-checkbox

:label

="index"

v-for

="(item,index) in files"

:key

="item.index"

>

<

/el-checkbox

>

<

/el-checkbox-group

>

這裡我選擇用迴圈的index作為核取方塊動態的laber,勾選相應的項,就把索引index新增到定義的checklist陣列中。

然後迴圈刪除掉要處理的陣列的相應下標項。

問題出現

迴圈下我用陣列的splice方法刪除對應項 this.files.splice(item,1),但用splice刪除陣列時,陣列發生改變,相應的索引值也會發生變化,就導致有的索引在改變之後沒有了,無法刪除。

解決方法

this

.checklist

.sort()

;for

(vari=

this

.checklist

.length-1

;i>=0

;i--

)

這裡採用逆向迴圈,從索引大的值開始刪除,索引就算改變了也會不會出翔找不到對應的索引項。

這裡我用到了sort()給數值排序是因為我用的index作為動態laber,新增的索引可能是第0個開始也可能是第n個,所以這裡加上排序,就完美解決了這個問題。1↩︎

splice 陣列刪除方法

splice增加資料到陣列 arr.splice 2,0,item 這句話中第乙個2指的是從arr 2 開始,0指刪除0個資料,item指插入資料為item arr.splice 2,1 這句話中第乙個2指的是從arr 2 開始,1指刪除1個資料 元素描述 index 必需。規定從何處新增 刪除元素...

陣列迴圈刪除資料時,splice使用注意

當在迴圈陣列中,刪掉某個元素的時候,不要使用splice方法。因為splice會使原陣列發生變化,而此時陣列還處在迴圈中,所以會出現問題。例子 有個陣列 formdata 需求 刪除formdata的itemlist中,queid 001 的一項。我最開始使用的是splice方法,但是報錯了 for...

splice 陣列刪除增加方法

splice增加資料到陣列 arr.splice 2,0,item 這句話中第乙個2指的是從arr 2 開始,0指刪除0個資料,item指插入資料為item arr.splice 2,1 這句話中第乙個2指的是從arr 2 開始,1指刪除1個資料 元素描述 index 必需。規定從何處新增 刪除元素...