JScript内置对象Array中元素的删除方法

家小玮

家小玮

2016-02-19 10:28

今天图老师小编给大家介绍下JScript内置对象Array中元素的删除方法,平时喜欢JScript内置对象Array中元素的删除方法的朋友赶紧收藏起来吧!记得点赞哦~
我们知道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();
            }
            else
            {
                for ( var j=i ; j  0 ; --j )
                {
                    this[j] = this[j-1];
                }
                this.shift();
            }    
            break;
        }
    }
};
    移动整理数组的目的只是为了删除元素后不改变剩余元素的彼此相对位置,否则只用把需要删除的元素swap到两端pop或shift以下就可以了。
展开更多 50%)
分享

猜你喜欢

JScript内置对象Array中元素的删除方法

Web开发
JScript内置对象Array中元素的删除方法

Array对象方法参考

Web开发
Array对象方法参考

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

删除JAVA集合中元素的实现代码

编程语言 网络编程
删除JAVA集合中元素的实现代码

JavaScript中Array 对象相关的几个方法

Web开发
JavaScript中Array 对象相关的几个方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ASP内置对象 Request对象 详解

ASP
ASP内置对象 Request对象 详解

JavaScript内置对象:arguments

Web开发
JavaScript内置对象:arguments

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

SQLServer分布式事务问题

SQLServer分布式事务问题

等到天放晴旳时候 便会浮现 - QQ伤感分组

等到天放晴旳时候 便会浮现 - QQ伤感分组
下拉加载更多内容 ↓