Js之如何移除Array/數(shù)組中指定元素
Js 移除Array數(shù)組中指定元素
首先需要找到元素的下標(biāo):
var array = [0,1,2,3,4,5]; var index = array.indexOf(5);
使用splice函數(shù)進(jìn)行移除:
if (index > -1) { ? ? array.splice(index, 1); }
indexOf()
方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。splice
函數(shù)的第二個(gè)參數(shù)指刪除的數(shù)目。splice
直接修改原數(shù)組,并把刪除的所有元素以另一個(gè)新數(shù)組的方式返回。
Js 數(shù)組刪除元素 避坑
length
JavaScript中Array的length屬性非常有特點(diǎn)一一它不是只讀的。因此,通過(guò)設(shè)置這個(gè)屬性可以從數(shù)組的末尾移除項(xiàng)或添加新項(xiàng),請(qǐng)看下面例子:
var colors = ["red", "blue", "grey"]; ? //創(chuàng)建一個(gè)包含3個(gè)字符串的數(shù)組 colors.length = 2; console.log(colors[2]); ?//undefined
delete
var arr = [1, 2, 3, 4]; delete arr[0]; console.log(arr); ? //[undefined, 2, 3, 4]
可以看出來(lái),delete刪除之后數(shù)組長(zhǎng)度不變,只是被刪除元素被置為undefined了。
棧方法
var colors = ["red", "blue", "grey"]; var item = colors.pop(); console.log(item); ? ? ?//"grey" console.log(colors.length); ? ?//2
在調(diào)用Pop方法時(shí),數(shù)組返回最后一項(xiàng),即”grey”,數(shù)組的元素也僅剩兩項(xiàng)。
隊(duì)列方法
var colors = ["red", "blue", "grey"]; var item = colors.shift(); console.log(item); ? ? ?//"red" console.log(colors.length); ? ?//2
隊(duì)列數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)規(guī)則是FIFO(先進(jìn)先出),隊(duì)列在列表的末端添加項(xiàng),從列表的前端移除項(xiàng),使用shift方法,它能夠移除數(shù)組中的第一個(gè)項(xiàng)并返回該項(xiàng),并且數(shù)組的長(zhǎng)度減1。
操作方法
var colors = ["red", "blue", "grey"]; var item = colors.splice(0, 1); console.log(item); ? ? ?//"red" console.log(colors); ? ?//["blue", "grey"]
迭代方法
所謂的迭代方法就是用循環(huán)迭代數(shù)組元素發(fā)現(xiàn)符合要?jiǎng)h除的項(xiàng)則刪除,用的最多的地方可能是數(shù)組中的元素為對(duì)象的時(shí)候,根據(jù)對(duì)象的屬性例如ID等等來(lái)刪除數(shù)組元素。
- forEach
var colors = ["red", "blue", "grey"]; colors.forEach(function(item, index, arr) { ? ? if(item == "red") { ? ? ? ? arr.splice(index, 1); ? ? } });
- filter
var colors = ["red", "blue", "grey"]; colors = colors.filter(function(item) { ? ? return item != "red" }); console.log(colors); ? ?//["blue", "grey"]
原型方法
Array.prototype.remove = function(dx) { ? ? if(isNaN(dx) || dx > this.length){ ? ? ? ? return false; ? ? } ? ? for(var i = 0,n = 0;i < this.length; i++) { ? ? ? ? if(this[i] != this[dx]) { ? ? ? ? ? ? this[n++] = this[i]; ? ? ? ? } ? ? } ? ? this.length -= 1; }; var colors = ["red", "blue", "grey"]; colors.remove(1); console.log(colors); ? ?//["red", "grey"]
在此把刪除方法添加給了Array的原型對(duì)象,則在此環(huán)境中的所有Array對(duì)象都可以使用該方法。
盡管可以這么做,但是我們不推薦在產(chǎn)品化的程序中來(lái)修改原生對(duì)象的原型。道理很簡(jiǎn)單,如果因某個(gè)實(shí)現(xiàn)中缺少某個(gè)方法,就在原生對(duì)象的原型中添加這個(gè)方法,那么當(dāng)在另一個(gè)支持該方法的實(shí)現(xiàn)中運(yùn)行代碼時(shí),就可能導(dǎo)致命名沖突。而且這樣做可能會(huì)意外的導(dǎo)致重寫原生方法。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript–Apple設(shè)備檢測(cè)示例代碼
JavaScript–Apple設(shè)備檢測(cè)示例代碼。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11Javascript動(dòng)手實(shí)現(xiàn)call,bind,apply的代碼詳解
這篇文章主要為大家詳細(xì)介紹了Javascript動(dòng)手實(shí)現(xiàn)call,bind,apply的代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-02-02JS button按鈕實(shí)現(xiàn)submit按鈕提交效果
今天在使用表單是同時(shí)使用POST更新、刪除操作。然而form表單的 submit 且一旦提交則全部提交,所以想到的實(shí)現(xiàn)方法就是 使用button實(shí)現(xiàn),怎么實(shí)現(xiàn)呢?下面小編給大家分享JS button按鈕實(shí)現(xiàn)submit按鈕提交效果,感興趣的朋友參考下吧2016-11-11javascript實(shí)現(xiàn)貪吃蛇游戲(娛樂(lè)版)
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08下雪了 javascript實(shí)現(xiàn)雪花飛舞
下雪了,這篇文章主要介紹了javascript實(shí)現(xiàn)雪花飛舞,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04JavaScript實(shí)現(xiàn)視頻轉(zhuǎn)GIF的示例代碼
這篇文章主要介紹了JavaScript實(shí)現(xiàn)視頻轉(zhuǎn)GIF,本文一共會(huì)按照以下三步去實(shí)現(xiàn)一個(gè)視頻轉(zhuǎn)?GIF?功能,解封裝視頻,從視頻文件中獲取視頻幀,解碼視頻幀,獲取幀圖像信息,拼裝幀圖像信息,生成?GIF,需要的朋友可以參考下2024-03-03jser必看的破解javascript各種加密的反向思維方法
才發(fā)現(xiàn)的破解javascript各種加密的反向思維方法,大家有好的方法都跟帖啊最近發(fā)現(xiàn)了一個(gè)代碼,加密了5層左右,我將破解到最后一步,而且不用javascript解密程序2007-04-04