麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > JS > 正文

JScript內置對象Array中元素的刪除方法

2024-09-06 12:43:08
字體:
來源:轉載
供稿:網友
我們知道JScript給我們提供了一個內置的數組對象Array。Array對象除了提供了constructor、length和prototype外,還默認提供了13個方法:concat、join、pop、push、reverse、shift、slice、sort、splice、toLocaleString、toString 、unshift和valueOf,可是沒有提供delete方法。

    要是熟悉JavaScript的話,會馬上說,系統提供了一個delete操作,可以用來刪除數組中的元素。對,JS系統里確實有一個delete可以刪除數組中的元素。可是這個刪除很難用,它確實可以刪除元素,可是它卻不更新Array對象的元素計數器。例如我們執行:

var ary = ['a', 'b', 'c'];
delete ary[1];
    如果正確的執行刪除后,我們希望會得到一個新的數組,他有兩個元素['a', 'c'],長度為2。可是執行完后我們確實是得到了兩個元素['a', 'c']的數組,可是這個新數組的長度ary.length居然還是3!。同時我們執行ary.toString()將得到"a,,c",這也表明數組的計數器還是3,因為Array的toString()實際上執行的是Array.join(',')。

    這樣的刪除在我們使用for( ; ; )遍歷數組的時候,將會非常的郁悶,我們可能很容易就可能被一個undefined的值搞死掉了。那么怎么才能獲得刪除數組元素后同步數組的大小呢?由于Array本身提供的pop和shift兩個函數可以"真正的"刪除數組的元素,所以我們可以使用它們來自己擴充一個remove函數。

    但是pop和shift只能從數組的兩端刪掉元素,所以我們在刪除之前需要對數組做一些整理,實現remove方法的代碼如下:

Array.prototype.remove = function(obj)
{
    for ( var i=0 ; i < this.length ; ++i )
    {
        if ( this[i] == obj )
        {
            if ( i > this.length/2 )
            {
                for ( var j=i ; j < this.length-1 ; ++j )
                {
                    this[j] = this[j+1];
                }
                this.pop();
            }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜视| h视频在线播放 | 亚洲午夜精选 | 国产午夜电影 | 羞羞的视频在线观看 | 久久国产精品久久久久久久久久 | 色欲香天天天综合网站 | 草草久久久 | 免费看日韩av | 国产日产精品一区二区三区四区 | 久久久成人精品视频 | 一级电影中文字幕 | 精精国产xxxx视频在线播放7 | 成年人免费高清视频 | 成人毛片在线免费看 | 亚洲精品无码不卡在线播放he | 亚州视频在线 | 哪里可以看免费的av | 亚洲一区二区免费 | 久久久99精品视频 | 免费黄色大片网站 | 99国产精品欲a | 92精品国产自产在线 | 男女无套免费视频 | 污黄视频在线播放 | 久久久久久久久久亚洲 | 亚洲片在线 | 欧美 国产 亚洲 卡通 综合 | 久久国产精品久久久久久久久久 | 国产九九九九 | 国产一级淫片免费看 | av在线免费播放 | 国产永久免费观看 | 国产精品影视 | 97精品视频在线观看 | 国产精品99久久久久久久vr | 欧美国产一区二区三区激情无套 | 国产精品久久久久久模特 | 欧美wwwwww| 毛片在线免费播放 | 久久我不卡 |