多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > [碼海拾貝 之JS] JS 之刪除數組中的元素

[碼海拾貝 之JS] JS 之刪除數組中的元素

來源:程序員人生   發布時間:2014-11-24 08:50:18 閱讀次數:2165次

前言

在Java 中要從1個list 中刪除1個元素, 直接使用 remove 方法就能夠了。

在js 中的array 并沒有 remove 方法, 但是在js 中array 有splice 方法可以達成相同的效果, 除此以外, 還可使用其他方式來實現這個效果。


使用splice 方法實現從數組中刪除元素

首先看1下 splice 方法如何使用。

語法

arrayObject.splice(index,howmany,item1,.....,itemX)
參數 描寫
index 必須。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。
howmany 必須。要刪除的項目數量。如果設置為 0,則不會刪除項目。
item1, ..., itemX 可選。向數組添加的新項目。


需要特別注意的就是,該方法會改變原始數組。

最簡單例子: -- 刪除數組1個元素

<script> var array1 = ["name1","name2","name3","name4"]; array1.splice(1,1); alert(array1); </script>

輸出是: name1,name3,name4

解析:

1. splice(1,1)   -刪除第2個元素。 

第1個 1 是位置, 位置從0 開始, 這個不難理解;

第2個1 是個數, 刪除1個元素。

2. 其實不需要 array1 = XXX; 的方式 數組的值就改變了。 緣由上面也說了。


繼續, 如果要在刪除的位置同時添加1個元素的話:

<script> var array1 = ["name1","name2","name3","name4"]; array1.splice(1,1,"name5"); alert(array1); </script>

輸出:  name1name5,,name3,name4



刪除復雜數組中的元素

以上例子的數組中的元素是1般的字符串。

這里所謂的復雜數組是指數組中的元素是對象而不是簡單的字符串。

開始這個之前, 先寫1個把js array 轉成 str 的方法:

function arrayToString(array) { var str = ""; if(array!=null&&array.length>0) { str += "["; for(var i=0;i<array.length;i++) { var objStr = ""; objStr += "{"; var obj = array[i]; for(var key in obj) { objStr += key; objStr += ":'"; objStr += obj[key]; objStr += "'"; objStr += ","; } if(objStr.length>3) { objStr = objStr.substring(0,objStr.length⑴); } objStr += "}"; str += objStr; if(i<array.length⑴) { str += ","; } } str += "]"; } return str; }

接下來, 刪除1個元素類型為object 的數組元素

<script> var obj1 = {key:"key1",name:'name1_1'}; var obj2 = {key:"key2",name:'name1_1'}; var obj3 = {key:"key3",name:'name2_2'}; var obj4 = {key:"key4",name:'name2_2'}; var array1 = [obj1,obj2,obj3,obj4]; //delete by key var delKey = "key2"; for(var i=0;i<array1.length;i++) { var keyTemp = array1[i].key; if(keyTemp===delKey) { array1.splice(i,1); } } alert(arrayToString(array1)); </script>

說明:

1. 這里的key 是唯1, name 值不為已

2. 這里數組循環不是用 forEach是由于 IE不支持

細部參見:

3. 以上是刪除唯1key 值的元素。

Javascript 數組循環遍歷之forEach


整體來講, 以上1次只刪除1個元素, 如果1次刪除多個元素的話呢?

類似刪除name 值是 “name1_1” 的元素, 對應到的是兩個元素, 寫法對應到應當是:

<script> var obj1 = {key:"key1",name:'name2_2'}; var obj2 = {key:"key2",name:'name2_2'}; var obj3 = {key:"key3",name:'name1_1'}; var obj4 = {key:"key4",name:'name1_1'}; var array1 = [obj1,obj2,obj3,obj4]; //delete by name var delName= "name2_2"; for(var i=0;i<array1.length;i++) { var nameTemp = array1[i].name; if(nameTemp===delName) { array1.splice(i,1); } } alert(arrayToString(array1)); </script>

但是千萬注意, 以上的寫法是毛病的。

應為第1次刪除1個元素以后, array1 的長度變化, 對應到各個位置的元素也產生變化。

所以以上的寫法:

1. 要末出現毛病, 報找不到指定位置的元素

2. 要末履行的結果不對。 上面的例子就是屬于這類。


針對這類狀態, 可以想到的解法有:

1. 1次刪除1個, 多循環幾次

2. 另外一中方法就是, new 1個 新的array , 把不需要刪除的元素放入這個array , 再用這個array 替換舊的array .


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲免费闲人蜜桃 | 亚洲欧美日韩国产综合久 | 亚洲欧美在线不卡 | a毛片免费| 久久视频精品538在线久 | 最近最新手机中文字幕在线看 | 欧美成人看片一区二区三区尤物 | 国产中文字幕在线免费观看 | 国产精品综合一区二区三区 | 久久天天 | 操片| 18在线观看网站 | 亚洲欧洲自拍偷拍 | 中文乱码字字幕在线第5页 中文欧美日韩 | 男人午夜小视频 | 亚洲九九爱 | 亚洲精品综合一区二区 | 可以免费看黄色的网站 | 国产免费一级片 | 成人性毛片 | 欧美精品亚洲精品日韩 | 久久综合九色综合欧洲 | 在线观看男女激情小视频 | 国产在线原创剧情麻豆 | 青青草久热精品视频在线观看 | 亚洲综合激情另类小说区 | 最近中文字幕大全2019 | 亚洲人免费| 午夜视频国语 | 无人日本免费视频 | 成人hd | 久久久久久国产精品三级 | 青青青青在线成人视99 | 亚洲成人伊人网 | www xxx日本 | 国产午夜人做人免费视频中文 | 羞羞动漫网址 | 老司机午夜免费福利视频 | 国产福利视频一区二区 | 国产乱小说 | 综合免费一区二区三区 |