JavaScript從數(shù)組中刪除特定數(shù)據(jù)的方法總結(jié)
前言
增刪改查是我們?nèi)粘i_(kāi)發(fā)中的最基本任務(wù),在JavaScript中我們經(jīng)常需要從數(shù)據(jù)組刪除特定的數(shù)據(jù)項(xiàng)。然而,JavaScript數(shù)組中并沒(méi)有提供刪除特定數(shù)據(jù)項(xiàng)的方法。所以我們必須使用替代的方法,來(lái)從javaScript中刪除特定數(shù)據(jù)項(xiàng)。
如何在Javascript中刪除特定的數(shù)組項(xiàng)
1:使用 filter()
使用現(xiàn)代 Javascript 刪除特定數(shù)組項(xiàng)的最簡(jiǎn)單方法是使用過(guò)濾器。讓我們看一個(gè)簡(jiǎn)單的例子:
let myArr = [ "??", "??", "??", "??" ]; let removedArr = myArr.filter((x) => x !== "??"); console.log(removedArr);
當(dāng)我們的數(shù)組中的每一個(gè)數(shù)據(jù)想都是唯一的時(shí)候,他是正常工作的,但是當(dāng)我們的存在重復(fù)項(xiàng)的時(shí)候,此時(shí)如果你只想刪除一個(gè),保留其他重復(fù)的,這種方式是無(wú)法做到的。
let myArr = [ "??", "??", "??", "??" ]; let removedArr = myArr.filter((x) => x !== "??"); console.log(removedArr);
由于我們有兩個(gè)青蘋(píng)果,并且新數(shù)組過(guò)濾掉了所有青蘋(píng)果,因此我們?cè)谑褂么朔椒〞r(shí)實(shí)際上刪除了兩個(gè)項(xiàng)目。如果我們只想刪除一個(gè)元素,我們必須使用另一種方法。
2:使用 indexOf() 和 splice()
indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。如果沒(méi)有找到匹配的字符串則返回 -1。 splice() 方法用于添加或刪除數(shù)組中的元素。注意:這種方法會(huì)改變?cè)紨?shù)組。 這種方式與上面的區(qū)別在于:
- 首先,它改變了原始數(shù)組——所以我們不在這里復(fù)制。原始數(shù)組將被改變。
- 其次,它使用兩個(gè)函數(shù)——首先我們獲取indexOf要?jiǎng)h除的數(shù)組項(xiàng),然后我們splice獲取數(shù)組以刪除單個(gè)項(xiàng)。
這是一個(gè)例子:
let myArr = [ "??", "??", "??", "??" ]; let getLocation = myArr.indexOf("??"); myArr.splice(getLocation, 1); // myArr now becomes [ "??", "??", "??" ]; console.log(myArr);
附:js delete方法刪除指定位置的數(shù)組元素
delete方法可以通過(guò)數(shù)組的下標(biāo)將js數(shù)組中的一個(gè)元素從指定位置上刪除,且刪除掉數(shù)組中的元素后,會(huì)把該下標(biāo)出的值置為undefined,數(shù)組的長(zhǎng)度不會(huì)變。
語(yǔ)法:
delete.數(shù)組[數(shù)組下標(biāo)];/*數(shù)組下標(biāo)控制指定位置,下標(biāo)從0開(kāi)始*/
代碼實(shí)例:刪除animal數(shù)組的第二項(xiàng)元素,即:animal[1],然后animal[1]的值會(huì)為:undefined。
<!DOCTYPE html> <html> ? ? <head> ? ? ? ? <meta charset="UTF-8"> ? ? </head> ? ? <body> ? ? ? ? <div class="demo"> ? ? ? ? ? ? <p>數(shù)組:cat,elephant,tiger,rabbit;<br>數(shù)組長(zhǎng)度為:4</p> ? ? ? ? ? ? <button onclick="myFunction()">點(diǎn)我--delete刪除元素</button> ? ? ? ? </div> ? ? </body> ? ? <script type="text/javascript"> ? ? ? ? function myFunction(){ ? ? ? ? ? ?var animal = ["cat", "elephant", "tiger","rabbit"]; ? ? ? ? ? ?document.write("<p>數(shù)組:"+animal+"<br>數(shù)組長(zhǎng)度:"+ animal.length+"</p>"); ? ? ? ? ? ?var animal1= delete animal[1]; ? ? ? ? ? ?document.write("<p>新數(shù)組:"+animal+"<br>刪除元素后,現(xiàn)在為:"+ animal[1]+"<br>數(shù)組長(zhǎng)度:"+ animal.length+"</p>"); ? ? ? ? } ? ? </script> </html>
總結(jié)
盡管在 Javascript 中沒(méi)有直接從數(shù)組中刪除項(xiàng)目的方法,但我們確實(shí)有兩個(gè)工具可以為我們提供足夠的靈活性來(lái)涵蓋幾乎所有有關(guān)刪除數(shù)組項(xiàng)目的場(chǎng)景。
到此這篇關(guān)于JavaScript從數(shù)組中刪除特定數(shù)據(jù)的文章就介紹到這了,更多相關(guān)js數(shù)組刪除特定數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)圓形進(jìn)度條動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)圓形進(jìn)度條動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06JavaScript 原型繼承之構(gòu)造函數(shù)繼承
JavaScript 是基于原型的面向?qū)ο笳Z(yǔ)言。也就是說(shuō),每個(gè)實(shí)例對(duì)象都具有一個(gè)原型。對(duì)象從該原型中繼承屬性和方法。這一篇將具體說(shuō)說(shuō)構(gòu)造函數(shù)的繼承。2011-08-08JS模擬簡(jiǎn)易滾動(dòng)條效果代碼(附demo源碼)
這篇文章主要介紹了JS模擬簡(jiǎn)易滾動(dòng)條效果代碼,可模擬出滾動(dòng)條拖動(dòng)顯示的效果,涉及JavaScript鼠標(biāo)事件的響應(yīng)及頁(yè)面元素運(yùn)算的相關(guān)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-04-04網(wǎng)頁(yè)整體變灰白色(兼容各瀏覽器)實(shí)例
網(wǎng)頁(yè)整體變灰白色(兼容各瀏覽器)實(shí)例,需要的朋友可以參考一下2013-04-04JavaScript對(duì)象解構(gòu)的用法實(shí)例解析
解構(gòu)賦值允許你使用類似數(shù)組或?qū)ο笞置媪康恼Z(yǔ)法將數(shù)組和對(duì)象的屬性賦給各種變量,下面這篇文章主要給大家介紹了關(guān)于JavaScript對(duì)象解構(gòu)用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01如何用js實(shí)現(xiàn)鼠標(biāo)向上滾動(dòng)時(shí)浮動(dòng)導(dǎo)航
今天給大家介紹一下使用JavaScript判斷鼠標(biāo)滑輪是不是向上滾動(dòng),當(dāng)向上滾動(dòng)的時(shí)候,導(dǎo)航條浮動(dòng)在頂部位置。示例代碼如下。2016-07-07onbeforeunload與onunload事件異同點(diǎn)總結(jié)
本文對(duì)onbeforeunload與onunload事件的異同點(diǎn)、觸發(fā)于、可以用在哪些元素以及解決刷新頁(yè)面時(shí)不調(diào)用onbeforeunload等等,感興趣的朋友可以參考下哈2013-06-06