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以下就可以了。

(0)

相关推荐

  • JavaScript数组Array对象增加和删除元素方法总结

    本文实例总结了JavaScript数组Array对象增加和删除元素方法.分享给大家供大家参考.具体分析如下: pop 方法 移除数组中的最后一个元素并返回该元素. arrayObj.pop( ) 必选的 arrayObj 引用是一个 Array 对象. 说明 如果该数组为空,那么将返回 undefined. shift 方法 移除数组中的第一个元素并返回该元素. arrayObj.shift( ) 必选的 arrayObj 引用是一个 Array 对象. 说明 shift 方法可移除数组中的第一

  • 使用js判断数组中是否包含某一元素(类似于php中的in_array())

    while case速度最快 复制代码 代码如下: function contains(arr, str) {    var i = arr.length;    while (i--) {           if (arr[i] === str) {           return true;           }       }       return false;}

  • JS中去掉array中重复元素的方法

    今天看了廖雪峰的js教程,看到了filter的用法. 其中用它来实现去除Array中重复元素的方法在这里记录下来. Filter filter是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素. 和map()类似,Array的filter()也接收一个函数.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素. 利用filter,可以巧妙地去除Array的重复元素: 'use strict'; v

  • js删除Array数组中指定元素的两种方法

    本节内容: js删除Array数组中指定元素 方法一, /* * 方法:Array.remove(dx) 通过遍历,重构数组 * 功能:删除数组元素. * 参数:dx删除元素的下标. */ Array.prototype.remove=function(dx) { if(isNaN(dx)||dx>this.length){return false;} for(var i=0,n=0;i<this.length;i++) { if(this[i]!=this[dx]) { this[n++]=

  • JS数组array元素的添加和删除方法代码实例

    js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[1] = "bbb"; arr[2] = "ccc"; //alert(arr.length);//3 arr.pop(); //alert(arr.length);//2 //alert(arr[arr.length-1]);//bbb arr.pop(); //al

  • 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操作,可以用来删除数组中的元素.对,J

  • numpy返回array中元素的index方法

    如下所示: import numpy a = numpy.array(([3,2,1],[2,5,7],[4,7,8])) itemindex = numpy.argwhere(a == 7) print (itemindex) print a 以上这篇numpy返回array中元素的index方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • JavaScript内置对象之Array的使用小结

    数组的创建方式: 1.字面量: 放置一个数值时,就是一个数据. var arr = [6]; 2.构造函数: 放置一个数据时,表示长度或数据的个数,空表示undefined. var arr = new Array(6); 建议:Array作为构造函数,行为很不一致.因此,不建议使用它生成新数组,直接使用数组字面量是更好的做法. 数组的操作: 1.push(); 用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度. 注意,该方法会改变原数组 var arr = [1,2,3]; c

  • Javascript基础知识中关于内置对象的知识

    目录 1.内置对象介绍 1.1 Math对象 1.2 Math中的方法 1.3 Date对象 2.Date中的方法 3.经典案例:倒计时效果: 4.Array数组对象 4.1 数组的创建 4.2 数组中的常用方法 5.字符串String 1.内置对象介绍 JavaScript组成: ECMAScript | DOM | BOM ECMAScript: 变量 , 函数, 数据类型 ,流程控制,内置对象 js中的对象: 自定义对象 , 内置对象 , 浏览器对象(不属于ECMAScript) 1.1

  • javascript中内置对象Math的介绍及用法案例

    目录 前言 Math概述 Math中常用函数的用法 1.绝对值方法 2.三个取整方法 3.求最大值/最小值 4.随机数 结语 前言 今天总结一下javascript 内置对象Math中的函数用法,顺带写一下常见的案例. Math概述 Math 对象不是构造函数,它具有数学常数和函数的属性和方法.跟数学相关的运算(求绝对值,取整.最大值等)可以使用 Math 中的成员. Math中常用函数的用法 Math.PI //圆周率Math.floor () //向下取整Math.ceil () //向上取

  • 不可或缺的ASP.NET内置对象小结

    为什么学习ASP.NET内置对象 在ASP.NET中微软提供了多种内置对象提供开发人员使用,在实际开发中内置对象的使用不可或缺的,在Web网站的数据交互,网页服务器交互,网页跳转,服务器数据的传输等其着举足轻重的作用.在初学ASP.NET技术中也是非常重要的环节,也是更深学习ASP.NET的"里程碑".本文章主要介绍ASP.NET的内置对象的使用.属性.方法和工作原理.ASP.NET的内置对象主要包括:Response.Response.Session.Cookie.Applicati

  • Javascript中prototype属性实现给内置对象添加新的方法

    本文实例讲述了Javascript中prototype属性实现给内置对象添加新的方法.分享给大家供大家参考.具体实现方法如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>prototype

  • 浅谈Python中的常用内置对象

    一.常用的python内置对象 对象类型 类型名称 示例 简要说明 数字 int,float,complex 1234,3.14,3+4j 数字大小没有限制,内置支持复数及其运算 字符串 str 'swfu' 使用单引号.双引号.三引号作为定界符,以r/R引导表示原始字符串 字节串 bytes b'hello world' 以字母b引导,可以使用单引号.双引号.三引号作为定界符 列表 list [1,2,3] 所有元素放在[ ]中,元素之向使用","分隔,其中的元素可以是任意类型 字典

  • JavaScript 中的单例内置对象Global 与 Math

    目录 前言 Global 1.URL编码方法 2.eval()方法 3.Gobal对象属性 4.window 对象 Math 1.Math 对象属性 2.min()和max()方法 3.舍入方法 Math.ceil(),Math.floor(),Math.round(),Math.fround() random()方法 前言 ECMA-262 对内置对象的定义是“任何由ECMAScript实现提供,与宿主环境无关,并在ECMAScript 程序开始执行时就存在的对象”.这意味着,开发者不用显示的

  • JavaScript中的内置对象介绍

    一.对象的概念 对象是一种特殊的数据类型(object). 拥有一系列的属性和方法. 分为内置对象和自定义对象. 二.String对象 String对象用来支持对于字符串的处理. 1.属性 length:获取字符串对象的长度. 例如: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport&q

随机推荐