淺談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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SyntaxHighlighter語(yǔ)法高亮插件使用說(shuō)明
SyntaxHighlighter語(yǔ)法高亮插件使用說(shuō)明,需要的朋友可以參考下。2011-08-08
微信小程序?qū)崿F(xiàn)手寫(xiě)簽名的示例代碼
這篇文章主要和大家分享一個(gè)微信小程序的示例代碼,可以實(shí)現(xiàn)手寫(xiě)簽名的效果。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-02-02
JavaScript實(shí)現(xiàn)旋轉(zhuǎn)木馬輪播圖
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)旋轉(zhuǎn)木馬輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
理解Javascript_15_作用域分配與變量訪問(wèn)規(guī)則,再送個(gè)閉包
在閱讀本博文之前,請(qǐng)先閱讀《理解Javascript_13_執(zhí)行模型詳解》 在'執(zhí)行模型詳解'中講到了關(guān)于作用域分配的問(wèn)題,這一篇博文將詳細(xì)的說(shuō)明函數(shù)對(duì)象、作用域鏈與執(zhí)行上下文的關(guān)系。2010-10-10
JS實(shí)現(xiàn)的表格行鼠標(biāo)點(diǎn)擊高亮效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)的表格行鼠標(biāo)點(diǎn)擊高亮效果代碼,涉及JavaScript響應(yīng)鼠標(biāo)事件動(dòng)態(tài)變換頁(yè)面元素屬性的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Javascript 同時(shí)提交多個(gè)Web表單的方法
1 問(wèn)題來(lái)自一位網(wǎng)友的提問(wèn): web頁(yè)面里有多個(gè)表單,每個(gè)表單對(duì)應(yīng)著某一類(lèi)數(shù)據(jù)操作。2009-02-02
JavaScript比較兩個(gè)數(shù)組的內(nèi)容是否相同(推薦)
這篇文章主要介紹了JavaScript如何比較兩個(gè)數(shù)組的內(nèi)容是否相同的相關(guān)資料,需要的朋友可以參考下2017-05-05
Javascript中prototype與__proto__的關(guān)系詳解
這篇文章主要給大家介紹了關(guān)于Javascript中prototype與__proto__的關(guān)系的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03

