日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

前言

在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 .


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美精品一区二区三区在线四季 | 国产精品久久久av久久久 | 欧美综合视频 | 免费看的av| 久久精品视频网 | 精品国产黄a∨片高清在线 五月色综合 | 色综合九九 | 国产美女无遮挡jk免费视频软件 | 国产高清在线精品 | 91精品国产欧美一区二区 | 欧美日韩综合在线 | 免费在线毛片 | 亚洲欧洲在线观看 | 毛片免费不卡 | 欧美日韩亚洲天堂 | 欧美精品1区2区3区 日本特黄a级高清免费大片 | 女用夫妻性快活器 | 欧美色久 | 欧美黑人疯狂性受xxxxx野外 | 日韩久久一区二区 | 久热99| 亚洲精品久 | 在线观看精品 | 亚洲天堂男人天堂 | 97成人在线| 九九热免费精品视频 | 免费成人av在线 | 免费看的av | 久久久精品免费观看 | 99久久精品国产麻豆演员表 | 黄色免费网站在线观看 | 日本免费视频在线观看 | 黄色精品网站 | 做a视频| 欧美日韩免费 | 免费国产在线视频 | 日韩av在线播放一区 | 精品一区二区久久 | 一区在线免费 | 中文在线一区二区 | 91成人网在线播放 |