JavaScript數(shù)組操作學(xué)習(xí)之splice()函數(shù)入門與精通
一、JS中splice()方法
1、定義和用法
splice() 方法為從數(shù)組中添加/刪除項目,然后返回被刪除的項目。
注釋:該方法會改變原始數(shù)組。
2、語法
arrayObject.splice(index,howmany,item1,.....,itemX)
3、說明
splice() 方法可刪除從 index 處開始的零個或多個元素,并且用參數(shù)列表中聲明的一個或多個值來替換那些被刪除的元素。
如果從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數(shù)組。
二、splice入門
splice方法:通過刪除(兩個參數(shù))或替換現(xiàn)有元素(三個參數(shù))或者原地添加新的元素(三個參數(shù))來修改數(shù)組,并以數(shù)組形式返回被修改的內(nèi)容。此方法會改變原數(shù)組。
參數(shù):
index —— 必需。整數(shù),規(guī)定添加/刪除項目的位置,使用負數(shù)可從數(shù)組結(jié)尾處規(guī)定位置(從1開始)。
howmany —— 必需。要刪除的項目數(shù)量。如果設(shè)置為 0,則不會刪除項目。
item1, …, itemX —— 可選。向數(shù)組添加的新項目。
返回值:Array —— 包含被刪除項目的新數(shù)組,如果有的話。
1、只有一個參數(shù)
splice(index) ——> 從index的位置開始,刪除之后的所有元素(包括第index個)
let array = [0,1,2,3,4,5,6] document.write("原數(shù)組為:"+ array + "<br />") let arrBack = array.splice(2) document.write("array:",array + "<br />") document.write("arrBack:",arrBack)
結(jié)果:
原數(shù)組為:0,1,2,3,4,5,6
array:0,1
arrBack:2,3,4,5,6
若 index < 0 , 則刪除最后倒數(shù)第index個元素,從1開始數(shù)。
let array = [0,1,2,3,4,5,6] document.write("原數(shù)組為:"+ array + "<br />") let arrBack = array.splice(-3) document.write("array:",array + "<br />") document.write("arrBack:",arrBack)
結(jié)果:
原數(shù)組為:0,1,2,3,4,5,6
array:0,1,2,3
arrBack:4,5,6
2、兩個參數(shù)(指定索引刪除)
splice(index,howmany) ——> 刪除從index位置開始的數(shù),howmany為刪除的個數(shù)。若 howmany 小于等于 0,則不刪除。
splice(2,1)表示刪除從index=2(即第三個元素)開始,刪除一個,即第三個元素。
let array = [0,1,2,3,4,5,6] document.write("原數(shù)組為:"+ array + "<br />") let arrBack = array.splice(2,1) document.write("array:",array + "<br />") document.write("arrBack:",arrBack)
結(jié)果:
原數(shù)組為:0,1,2,3,4,5,6
array:0,1,3,4,5,6
arrBack:2
splice(2,0)表示刪除從index=2(即第三個元素)開始,刪除0個,即不刪除
let array = [0,1,2,3,4,5,6] document.write("原數(shù)組為:"+ array + "<br />") let arrBack = array.splice(2,0) document.write("array:",array + "<br />") document.write("arrBack:",arrBack)
結(jié)果:
原數(shù)組為:0,1,2,3,4,5,6
array:0,1,2,3,4,5,6
arrBack:
3、大于等于3個元素(新對象替換老對象)
splice(index ,howmany , item1, …, itemX )
當(dāng)index >0時
(1)、howmany 為0時,不刪除只添加 —— 在index位置前添加item1, …, itemX
(2)、howmany > 0時,刪除且添加 —— 刪除從index位置開始的數(shù),howmany為刪除的個數(shù),并且在index位置添加item1, …, itemX
當(dāng)index <0時,最后一個數(shù)為 -1,依次倒數(shù)第二個數(shù)為-2,...
(1)、howmany 為0時,不刪除只添加 —— 在-index位置前添加item1, …, itemX
(2)、howmany > 0時,刪除且添加 —— 刪除從-index位置開始的數(shù),howmany為刪除的個數(shù),并且在-index位置前(相當(dāng)于往后 -2前是 -1)添加item1, …, itemX的數(shù)
splice(2,0,8,9)表示刪除從index=2(即第三個元素)開始,刪除0個,即不刪除;并在第三個元素前添加8,9
let array = [0,1,2,3,4,5,6] document.write("原數(shù)組為:"+array + "<br />") let arrBack = array.splice(2,0,8,9) document.write("array:",array + "<br />") document.write("arrBack:",arrBack)
結(jié)果:
原數(shù)組為:0,1,2,3,4,5,6
array:0,1,8,9,2,3,4,5,6
arrBack:
splice(5,3,8,9)表示刪除從index=5(即第六個元素)開始,刪除3個(包含第六個),后面只剩兩個,全部刪除;并在第六個元素位置添加8,9
let array = [0,1,2,3,4,5,6] document.write("原數(shù)組為:"+array + "<br />") let arrBack = array.splice(5,3,8,9) document.write("array:",array + "<br />") document.write("arrBack:",arrBack)
結(jié)果:
原數(shù)組為:0,1,2,3,4,5,6
array:0,1,2,3,4,8,9
arrBack:5,6
splice(-2,0,8,9)表示刪除從index=-2(即倒數(shù)第二個元素)開始,刪除0個,即不刪除;并在倒數(shù)第二個元素前添加8,9
let array = [0,1,2,3,4,5,6] document.write("原數(shù)組為:"+array + "<br />") let arrBack = array.splice(-2,0,8,9) document.write("array:",array + "<br />") document.write("arrBack:",arrBack)
結(jié)果:
原數(shù)組為:0,1,2,3,4,5,6
array:0,1,2,3,4,8,9,5,6
arrBack:
splice(-2,3,8,9)表示刪除從index=-2(即倒數(shù)第二個元素)開始,刪除3個,即5,6(只有兩個);并在倒數(shù)第二個元素前添加8,9
let array = [0,1,2,3,4,5,6] document.write("原數(shù)組為:"+array + "<br />") let arrBack = array.splice(-2,3,8,9) document.write("array:",array + "<br />") document.write("arrBack:",arrBack)
結(jié)果:
原數(shù)組為:0,1,2,3,4,5,6
array:0,1,2,3,4,8,9
arrBack:5,6
三、項目實戰(zhàn)
根據(jù)索引刪除
1、當(dāng)勾選復(fù)選框,觸發(fā)change事件,執(zhí)行函數(shù)
handleItemChange(e){ // 如果是添加勾選,則執(zhí)行以下代碼 if(e.detail.value.length > 0){ var itemList = e.detail.value itemList.forEach(item =>{ var row = item.split(',') var list = [] const obj = {name: row[1],value: row[0]} list.push(obj) this.setData({ ids: this.data.ids.concat(row[0]), names: this.data.names.concat(row[1]), tagList: [...this.data.tagList,...list] }) this.data.dataList.forEach(item =>{ if(item.id == row[0]){ item.checked = true } }) }) }else{ // 如果是去掉勾選,則執(zhí)行以下代碼 let index = this.data.ids.findIndex(item =>e.currentTarget.dataset.id == item) this.data.ids.splice(index, 1); this.data.names.splice(index,1) this.data.tagList.splice(index,1) } },
2、removeTags方法如下:即將tags中的對象從數(shù)組中刪除,將auditorIds中的userId也刪除
removeTags(tag) { this.tags.splice(this.tags.indexOf(tag), 1); this.auditorIds.splice(this.auditorIds.indexOf(tag.id),1); },
3、刪除文件
fileRemove(val, fileList) { let isDelete = false if (val.id !== null && val.id !== 0) { this.$confirm('此操作將刪除文件, 是否繼續(xù)?', '提示', { confirmButtonText: '確定', cancelButtonText: '取消', type: 'warning' }).then(() => { isDelete = true nfsFileApi.deleteFile(val.id).then(response => { if (response.success) { this.files = fileList; for (var i = 0; i < this.files.length; i++) { var obj = this.files[i]; if (obj.id != null && obj.id !== 0 && obj.id === val.id) { this.files.splice(i, 1); } } } else { this.$message.error('刪除文件失敗'); } }) }).catch(() => { isDelete = false; }) return isDelete } else { this.files = fileList; this.files.splice(this.files.indexOf(val), 1); } },
新對象替換老對象
1、往來單位關(guān)聯(lián)平臺企業(yè)
先替換企業(yè),再更新后臺的關(guān)聯(lián)企業(yè)
updateRalationEnterPrise(row) { this.relationEntity.splice(0, 1, row); // 0表示指定在index為0處刪除,1表示要刪除的數(shù)量,row表示要添加到數(shù)組中的新項目。 this.entity.relPtsEntityId = row.entityId; // 將entity_id復(fù)制給relPtsEntityId,在后臺更新relPtsEntityId字段 updateAgent(this.entity).then(res => { if (res.success) { this.$message.success("關(guān)聯(lián)成功") } }) },
2、后臺通過websocket給前端發(fā)送消息,消息的內(nèi)容為id,前端收到消息后將該id的樣式改為紅色即可。
methods: { //初始化 initWs() { if (typeof (WebSocket) === "undefined") { alert("您的瀏覽器不支持socket") } else { // 實例化socket 111是固定的用戶id,正式環(huán)境直接獲取當(dāng)前登錄用戶id // this.socket = new WebSocket(this.global.wsUrl + '111') // this.global.setWs(this.socket) this.socket = new WebSocket("ws://localhost:8888/webSocket/" + '111'); // 監(jiān)聽socket連接 this.socket.onopen = () => { console.log("socket連接成功") } // 監(jiān)聽socket錯誤信息 this.socket.onerror = () => { console.error("連接錯誤") } //監(jiān)聽socket消息 this.socket.onmessage = (msg) => { console.log(msg) //處理消息 var serverMsg = msg.data; var t_id = parseInt(serverMsg) //服務(wù)端發(fā)過來的消息,ID,string需轉(zhuǎn)化為int類型才能比較 for (var i = 0; i < this.list.length; i++) { var item = this.list[i]; if(item.id == t_id){ item.state = -1; // 修改原來對象中的state屬性值為-1,改變顏色 this.list.splice(i,1,item) // state值為-1的新對象替換舊對象 break; } } } // 監(jiān)聽socket關(guān)閉信息 this.socket.onclose = (e) => { console.error("socket已經(jīng)關(guān)閉") console.error(e) } } }, },
效果:
到此這篇關(guān)于JavaScript數(shù)組操作學(xué)習(xí)之splice()函數(shù)入門與精通的文章就介紹到這了,更多相關(guān)js splice入門與精通內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JS數(shù)組中的splice()方法及用原生寫法分享
- JS中splice添加或刪除數(shù)組元素
- js常用函數(shù)push()、pop()、shift()、unshift()、slice()和splice()等詳解
- JavaScript 使用 splice 方法刪除數(shù)組元素可能導(dǎo)致的問題分析
- js數(shù)組刪除問題(splice和delete的用法)
- Javascript數(shù)組的?splice?方法詳細介紹
- JavaScript基礎(chǔ)學(xué)習(xí)之splice()函數(shù)詳解
- javascript數(shù)組中的concat方法和splice方法
- JavaScript中splice的使用方法詳解
- 淺談js數(shù)組splice刪除某個元素爬坑
- javascript數(shù)組元素刪除方法delete和splice解析
- JS數(shù)組splice操作實例分析
- JavaScript中join()、splice()、slice()和split()函數(shù)用法示例
- js刪除數(shù)組中的元素delete和splice的區(qū)別詳解
- JavaScript中splice與slice的區(qū)別
- 原生JS中slice()方法和splice()區(qū)別
- 淺談js數(shù)組和splice的用法
- JavaScript中數(shù)組slice和splice的對比小結(jié)
相關(guān)文章
javascript 刪除select中的所有option的實例
這篇文章主要介紹了javascript 刪除select中的所有option的實例的相關(guān)資料,希望通過本文能幫助到大家實現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09原生JavaScript實現(xiàn)動態(tài)省市縣三級聯(lián)動下拉框菜單實例代碼
像平時購物選擇地址時一樣,通過選擇的省動態(tài)加載城市列表,通過選擇的城市動態(tài)加載縣區(qū)列表,從而可以實現(xiàn)省市縣的三級聯(lián)動,下面使用原生的JavaScript來實現(xiàn)這個功能,需要的朋友參考下吧2016-02-02svg插入foreignObject無法響應(yīng)事件解決
這篇文章主要為大家介紹了svg插入foreignObject無法響應(yīng)事件解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10詳解axios中封裝使用、攔截特定請求、判斷所有請求加載完畢)
這篇文章主要介紹了axios中封裝使用、攔截特定請求、判斷所有請求加載完畢的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04