淺談js數(shù)組splice刪除某個(gè)元素爬坑
先來(lái)看下幾個(gè)概念:
// splice:返回從原始數(shù)組中刪除的項(xiàng)(如果沒(méi)有任何刪除,則返回空數(shù)組) // 當(dāng)指定2個(gè)參數(shù)時(shí),表示刪除 // 當(dāng)指定3個(gè)參數(shù),且第2個(gè)參數(shù)為0時(shí)表示插入 // 當(dāng)指定3個(gè)參數(shù),且第2個(gè)參數(shù)為1時(shí)表示替換
本次就拿刪除舉例,本身我們想刪除數(shù)組中的某個(gè)指定元素,我們需要知道它所在數(shù)組中的下標(biāo),我們可以用 數(shù)組.indexOf獲取它所在的下標(biāo),然后拿splice刪除這個(gè)元素。
本身是沒(méi)問(wèn)題
代碼如下:
var arr = ['張三','李四','王五','趙六'];// 刪除王五arr.splice(arr.indexOf('王五'),1);
但是。。。。。問(wèn)題就來(lái)了。
如果放到for循環(huán)中,比如循環(huán)數(shù)組,當(dāng)某個(gè)條件成立的時(shí)候,我們需要?jiǎng)h除某個(gè)指定的元素。
但是循環(huán)中,i每次都是+1的,但是我們刪除某個(gè)元素后,下標(biāo)就變了,相應(yīng)的位置發(fā)生變化,i的值加一后,就會(huì)跳過(guò)下一個(gè)元素。
坑啊。。。
所以,在刪除某個(gè)元素的時(shí)候,我們手動(dòng)把 i的值再減一,這樣就會(huì)避免出現(xiàn)跳過(guò)某個(gè)元素的問(wèn)題。
例如:循環(huán)數(shù)組,當(dāng) DasOperation 屬性值等于 沒(méi)變 的時(shí)候,從數(shù)組中刪除這條數(shù)據(jù),然后i-1
// 刪除沒(méi)有變化的,不傳遞到后臺(tái)for (let i = 0; i < this.CurrJobData.Content.length; i += 1) { if (this.CurrJobData.Content[i].DasOperation === ’沒(méi)變’) { this.CurrJobData.Content.splice(this.CurrJobData.Content.indexOf(this.CurrJobData.Content[i]), 1); i -= 1;// 必須對(duì)i減去1,否則后面的一個(gè)元素會(huì)被跳過(guò)去 }}
好了,為避免更多小伙伴遇坑,貼出來(lái),希望有幫助。
到此這篇關(guān)于淺談js數(shù)組splice刪除某個(gè)元素爬坑的文章就介紹到這了,更多相關(guān)js splice刪除某個(gè)元素內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 基于 Python 實(shí)踐感知器分類(lèi)算法2. Python如何批量生成和調(diào)用變量3. Python 中如何使用 virtualenv 管理虛擬環(huán)境4. ASP.NET MVC實(shí)現(xiàn)橫向展示購(gòu)物車(chē)5. 通過(guò)CSS數(shù)學(xué)函數(shù)實(shí)現(xiàn)動(dòng)畫(huà)特效6. Python獲取B站粉絲數(shù)的示例代碼7. windows服務(wù)器使用IIS時(shí)thinkphp搜索中文無(wú)效問(wèn)題8. ASP.Net Core對(duì)USB攝像頭進(jìn)行截圖9. ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)的實(shí)現(xiàn)10. python利用opencv實(shí)現(xiàn)顏色檢測(cè)
