`
杨胜寒
  • 浏览: 284693 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

javascript数组像list一样插入和删除元素

阅读更多

来自《http://www.yshjava.cn/post/416.html》的一篇文章。

原生的JavaScript数组不能像Java中的List一样在任意位置插入和移除元素,而恰巧很多时候偏偏需要这样的功能,怎么办呢?只好对原生的JavaScript数组做一点扩展了...

扩展的代码非常简单,原理是向JavaScript的数组的原型中添加两个两个函数:insert和remove,分别负责向数组中指定位置插入元素和移除指定位置的元素。代码如下: 

Array.prototype.insert = function(index, value) {
	if(index < 0){
		//如果index位置无效,默认插入到最后一个位置上
		index = this.length;
	}
	var part1 = this.slice(0, index);
	var part2 = this.slice(index);
	part1.push(value);
	return (part1.concat(part2));
};
Array.prototype.remove = function(index) {
	//检查index位置是否有效
	if(index >= 0 && index < this.length){
		var part1 = this.slice(0, index);
		var part2 = this.slice(index);
		part1.pop();
		return (part1.concat(part2));
	}
	return this;
};

 

测试代码如下:

 

var arr = [1, 2, 3];
//遍历原始数组
for(var i = 0; i < arr.length; i++){
	alert(arr[i]);
}
//在第二个位置插入一个新元素
arr = arr.insert(1,'new 2');
//删除第三个位置上的元素
arr = arr.remove(3);
//遍历新数组
for(var i = 0; i < arr.length; i++){
	alert(arr[i]);
}

 

总是觉得这样分隔和连接数组,在性能上可能会有问题,不知道还有没有其它更好的方式....

分享到:
评论

相关推荐

    关于JavaScript数组去重的一些理解汇总

    做前端开发几年,在项目中用到数组去重的机会倒不是很多,但是在面试的时候却经常被问到,个人理解,这道题真正考的是对JavaScript的基础的掌握,因为有很多种方式可以做到。这次就根据这道题,将相关的知识理解透彻...

    list-methods-mini-lab-javascript

    无论您是计划聚会,创建客人名单,去杂货店购物和创建杂货店列表,还是与朋友就有史以来的前十部电影进行辩论,您都可能已经在数组形式中进行了很多思考。 作为程序员,数组成为强大的工具。 例如,如果您在纸上列...

    y-list:Yjs的列表类型

    您可以在列表类型中插入和删除任意对象(也是Yjs的自定义类型)。用它! 用bower或npm检索它。凉亭 bower install y-list --save并包括js库。 [removed][removed]NPM npm install y-list --save并将其放在Y对象上。...

    JavaScript实现栈结构Stack过程详解

    数组(Aarray)栈(Stack)链表(Linked List)图(Graph)散列表(Hash)队列(Queue)树(Tree)堆(Heap) 注意:数据结构与算法与语言无关,常见的编程语言都有直接或间接的使用上述常见的数据结构。 1.2.什么是...

    courses-list:列出课程库

    课程:清单清单课程库资料集您可以在数据目录下找到数据。... 根据weight属性对数组排序根据权重属性对数组进行排序,例如按权重排序,元素必须在标签上排序插入: 首先插入一个元素在最后插入一个元素在第n个

    Knockout API 中文版

    它是一个在页面里操作元素和事件的框架,非常出色并且易使用,在DOM操作上肯定使用jQuery,KO解决不同的问题。 Everyone loves jQuery! It’s an outstanding replacement for the clunky, inconsistent DOM API ...

    mutant-scroll

    突变滚动一个无限滚动条,由拉流提供。 受到了极大启发。... classList (可选)要添加到最终元素的类的数组prepend , append (可选)提供要在流式传输内容之前或之后插入的html元素数组。 updateTop (可

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    插入、更新和删除数据 345 11.4.6 FormView控件 347 11.5 其他数据绑定控件 351 11.5.1 DropDownList、ListBox、RadioButtonList和CheckBoxList 351 11.5.2 TreeView控件 352 11.5.3 Ad Rotator控件 352 ...

    cpp-算法精粹

    目前支持 Java, C++, C#, Python, Ruby, JavaScript, Swift, Scala, Clojure, 将来还会支持更多编程语言。 在线阅读 https://www.gitbook.com/book/soulmachine/algorithm-essentials/ 内容目录 介绍 线性表 ...

    freemarker总结

    除了无法访问它的大小和不能使用索引来获得它的子变量:集合可以看作只能由&lt;#list...&gt;指令使用的受限sequences。 5、 方法:通过传递的参数进行计算,以新对象返回结果 方法变量通常是基于给出的参数计算值在数据...

    fckedit编辑器

    FillEmptyBlocks=true/false 使用这个功能,可以将空的块级元素用空格来替代 FontColors="" 设置显示颜色拾取器时文字颜色列表 FontFormats="" 设置显示在文字格式列表中的命名 FontNames="" 字体列表中的字体名 ...

    xheditor-1.1.14

    说明:count和list必需选其中一个值,注意count模式插入表情img的alt为空 备注:1.0.0 beta2新添加 hoverExecDelay:悬停自动执行延迟的时间 参数:数值(单位毫秒),默认为100,设置为-1关闭此功能 备注:1.0.0 rc2...

    Tcl_TK编程权威指南pdf

    使用list命令来构建代码 在eval内部利用concat uplevel命令 subst命令 第11章 正则表达式 何时使用正则表达式 正则表达式的语法 高级正则表达式(are) 语法总结 regexp命令 rgsub命令 使用regsub将数据...

    脚本魔术师

    增加了 clsStringArray 的Byte数组管理功能,可插入字节、字节集,查找字节,得到或设置字节集等功能 3.增加了 网络服务器和客户端的 Connection 对象的Tag属性 和 GetNewConnection函数,用于克隆自身 2007...

    C#基类库(苏飞版)

    这主要是为了让大家练手的,他使用C#代 码的方法实现了对数据的 备份,还原,分离,附加,添加和删除用户等操作 3.DbHelperMySQL类 数据访问抽象基础类 主要是访问Mysql数据库主要实现如下功能 1.得到最大值 2....

    Java学习笔记-个人整理的

    {1.11.2.3}插入排序}{40}{subsubsection.1.11.2.3} {1.11.3}递归调用}{41}{subsection.1.11.3} {1.12}Java API}{41}{section.1.12} {1.13}Linux命令}{41}{section.1.13} {1.13.1}基本查看、移动}{41}{...

Global site tag (gtag.js) - Google Analytics