淺談js數(shù)組splice刪除某個元素爬坑
先來看下幾個概念:
// splice:返回從原始數(shù)組中刪除的項(如果沒有任何刪除,則返回空數(shù)組) // 當指定2個參數(shù)時,表示刪除 // 當指定3個參數(shù),且第2個參數(shù)為0時表示插入 // 當指定3個參數(shù),且第2個參數(shù)為1時表示替換
本次就拿刪除舉例,本身我們想刪除數(shù)組中的某個指定元素,我們需要知道它所在數(shù)組中的下標,我們可以用 數(shù)組.indexOf獲取它所在的下標,然后拿splice刪除這個元素。
本身是沒問題
代碼如下:
var arr = ['張三','李四','王五','趙六'];// 刪除王五arr.splice(arr.indexOf('王五'),1);
但是。。。。。問題就來了。
如果放到for循環(huán)中,比如循環(huán)數(shù)組,當某個條件成立的時候,我們需要刪除某個指定的元素。
但是循環(huán)中,i每次都是+1的,但是我們刪除某個元素后,下標就變了,相應的位置發(fā)生變化,i的值加一后,就會跳過下一個元素。
坑啊。。。
所以,在刪除某個元素的時候,我們手動把 i的值再減一,這樣就會避免出現(xiàn)跳過某個元素的問題。
例如:循環(huán)數(shù)組,當 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,否則后面的一個元素會被跳過去 }}
好了,為避免更多小伙伴遇坑,貼出來,希望有幫助。
到此這篇關于淺談js數(shù)組splice刪除某個元素爬坑的文章就介紹到這了,更多相關js splice刪除某個元素內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!
相關文章:
1. 基于PHP做個圖片防盜鏈2. ASP.NET MVC把數(shù)據(jù)庫中枚舉項的數(shù)字轉換成文字3. asp.net core 認證和授權實例詳解4. XML在語音合成中的應用5. .NET中實現(xiàn)對象數(shù)據(jù)映射示例詳解6. 基于javaweb+jsp實現(xiàn)企業(yè)車輛管理系統(tǒng)7. ASP.NET MVC使用Boostrap實現(xiàn)產品展示、查詢、排序、分頁8. 如何使用ASP.NET Core 配置文件9. jscript與vbscript 操作XML元素屬性的代碼10. php使用正則驗證密碼字段的復雜強度原理詳細講解 原創(chuàng)
