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