淺談js數(shù)組splice刪除某個元素爬坑
先來看下幾個概念:
// splice:返回從原始數(shù)組中刪除的項(xiàng)(如果沒有任何刪除,則返回空數(shù)組)
// 當(dāng)指定2個參數(shù)時,表示刪除
// 當(dāng)指定3個參數(shù),且第2個參數(shù)為0時表示插入
// 當(dāng)指定3個參數(shù),且第2個參數(shù)為1時表示替換
本次就拿刪除舉例,本身我們想刪除數(shù)組中的某個指定元素,我們需要知道它所在數(shù)組中的下標(biāo),我們可以用 數(shù)組.indexOf獲取它所在的下標(biāo),然后拿splice刪除這個元素。
本身是沒問題
代碼如下:
var arr = ["張三","李四","王五","趙六"];
// 刪除王五
arr.splice(arr.indexOf("王五"),1);
但是。。。。。問題就來了。
如果放到for循環(huán)中,比如循環(huán)數(shù)組,當(dāng)某個條件成立的時候,我們需要刪除某個指定的元素。
但是循環(huán)中,i每次都是+1的,但是我們刪除某個元素后,下標(biāo)就變了,相應(yīng)的位置發(fā)生變化,i的值加一后,就會跳過下一個元素。
坑啊。。。
所以,在刪除某個元素的時候,我們手動把 i的值再減一,這樣就會避免出現(xiàn)跳過某個元素的問題。
例如:循環(huán)數(shù)組,當(dāng) DasOperation 屬性值等于 沒變 的時候,從數(shù)組中刪除這條數(shù)據(jù),然后i-1
// 刪除沒有變化的,不傳遞到后臺
for (let i = 0; i < this.CurrJobData.Content.length; i += 1) {
if (this.CurrJobData.Content[i].DasOperation === '沒變') {
this.CurrJobData.Content.splice(this.CurrJobData.Content.indexOf(this.CurrJobData.Content[i]), 1);
i -= 1;// 必須對i減去1,否則后面的一個元素會被跳過去
}
}
好了,為避免更多小伙伴遇坑,貼出來,希望有幫助。
到此這篇關(guān)于淺談js數(shù)組splice刪除某個元素爬坑的文章就介紹到這了,更多相關(guān)js splice刪除某個元素內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
純javascript實(shí)現(xiàn)四方向文本無縫滾動效果
本文主要給大家分享了使用純javascript實(shí)現(xiàn)的可控制的四方向文本無縫滾動的代碼,效果非常不錯,有需要的小伙伴可以參考下。2015-06-06
js實(shí)現(xiàn)簡潔的滑動門菜單(選項(xiàng)卡)效果代碼
這篇文章主要介紹了js實(shí)現(xiàn)簡潔的滑動門菜單(選項(xiàng)卡)效果代碼,涉及javascript鼠標(biāo)事件操作頁面元素樣式切換的實(shí)現(xiàn)技巧,簡單實(shí)用,需要的朋友可以參考下2015-09-09
Ajax高級筆記 JavaScript高級程序設(shè)計筆記
這篇文章主要介紹了Ajax高級筆記 JavaScript高級程序設(shè)計筆記,需要的朋友可以參考下2017-06-06
使用Nginx部署前端項(xiàng)目的詳細(xì)步驟記錄
在實(shí)際開發(fā)中我們通常會使用Nginx來部署前端靜態(tài)頁面,以提供快速訪問速度和良好的用戶體驗(yàn),這篇文章主要給大家介紹了關(guān)于使用Nginx部署前端項(xiàng)目的詳細(xì)步驟,需要的朋友可以參考下2024-08-08

