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

2016-02-19 10:28 6 1 收藏

今天图老师小编给大家介绍下JScript内置对象Array中元素的删除方法,平时喜欢JScript内置对象Array中元素的删除方法的朋友赶紧收藏起来吧!记得点赞哦~

【 tulaoshi.com - Web开发 】

我们知道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以下就可以了。

来源:https://www.tulaoshi.com/n/20160219/1594749.html

延伸阅读
标签: Web开发
在项目,要实现把页面中的一个Table保存到Excel中,代码如下: Html代码 html    head       title保存HTML中的Table到Excel中/title    /head    body       h1保存内容到Excel中/h1       table id='content'&nb...
标签: PS PS教程
在软件UI设计、视频后期等需要团队协作的项目中,经常涉及到将Photoshop的元素导出的问题。比如项目较大时,会有成百上千的图层,又如设计IOS或者Android应用程序时,经常要将图像保存成几种不同的分辨率,Photoshop提供了多种方式让将导出流程精简化、自动化。 方法一:合并拷贝(Copy Merged) 将图像效果(如一个按钮设计)快速导出到另一个...
标签: Web开发
Request和Response这两个对象是ASP所提供的内置对象中最常用的两个。在浏览器(或其他用户代理)和Web服务器之间,请求与响应中发生的信息交流可以通过ASP中的两个内置对象来进行访问和管理,这两个对象称为Request和Response对象。 在ASP页中所要进行的工作几乎都要访问这两个对象,使用这两个对象的方式将影响页面的效率及可靠性。...
标签: Web开发
在javascript中,我们有时候要使用delete删除对象。但是,对于delete的一些细节我们未必尽知。昨天,看到kangax分析delete的文章,获益匪浅。本文将文章的精华部分翻译出来,与各位分享。 原理代码类型 执行上下文 激活对象/可变对象 属性特性 内置对象和DontDelete 未声明的赋值 Firebug 困惑通过eval删除变量 浏览器兼容性Gecko DontDelet...
abort 方法 作 用 abort 方法取消一个进行中的异步下载 基本语法 xmlDocument.abort();说 明 如果这个方法在异步下载时被呼叫,所有的解析动作会停止,而且在内存中的文件会被释放。范 例xmlDocumentAppendChild 方法 作 用 加上一个节点当作指定节点最后的子节点。 基本语法 xmlDocumentNode.appendChild(newChild);说 明 newChild 是附加子...

经验教程

155

收藏

45
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部