在JavaScript中构建ArrayList示例代码


Posted in Javascript onSeptember 17, 2014

前面我们介绍了JavaScript Array 的API,在JavaScript 中 数组 本身就非常强大,可以存储任意类型,且长度自动扩容,又提供 遍历, 过滤,等多个操作数组的方法。

简直完爆Java的的数组(长度固定,单一类型)。而Java中的集合类 就是弥补数组不足,其底层大多使用Object [] 存储,只是提供动态扩容的策略,当然JDK的 API 之丰富,是其他语言难以匹敌的。

但是不妨碍我对Java、JavaScript的喜爱。

Java就像 一个中年老妇女,你总能在JDK中 看到她的 风韵犹存,在构建 大型分布式 系统,就能体现出她的 谆谆教导;

而JavaScript 就是含苞待放的 少女 ,每一次绽放 ,就会激起你 内心的 涟漪,得小心调教,才能为你所用。

好吧 原谅我不恰当的比喻,来点干货。

/** 
*@class ArrayList 
*@description 
*@time 2014-09-16 21:59 
*@author StarZou 
**/ 

function ArrayList(arr) { 
this._elementData = arr || []; 
} 

var arrayListPrototype = { 

'_arrayPrototype': Array.prototype, 

'_getData': function () { 
return this._elementData; 
}, 

'size': function () { 
return this._getData().length; 
}, 

'isEmpty': function () { 
return this.size() === 0; 
}, 

'contains': function (obj) { 
return this.indexOf(obj) > -1; 
}, 

'indexOf': function (obj) { 
var i , data = this._getData(), length = data.length; 
for (i = 0; i < length; i++) { 
if (obj === data[i]) { 
return i; 
} 
} 
return -1; 
}, 

'lastIndexOf': function (obj) { 
var i , data = this._getData(), length = data.length; 
for (i = length - 1; i > -1; i--) { 
if (obj === data[i]) { 
return i; 
} 
} 
return -1; 
}, 

'get': function (index) { 
return this._getData()[index]; 
}, 

'set': function (index, element) { 
this._getData()[index] = element; 
}, 

'add': function (index, element) { 
if (element) { 
this.set(index, element); 
} else { 
return this._getData().push(index); 
} 
}, 

'remove': function (index) { 
var oldValue = this._getData()[index]; 
this._getData()[index] = null; 
return oldValue; 
}, 

'clear': function () { 
this._getData().length = 0; 
}, 

'addAll': function (index, array) { 
if (array) { 
this._getData().splice(index, 0, array); 
} else { 
this._arrayPrototype.push.apply(this._getData(), index); 
} 
} 

}; 

ArrayList.prototype = arrayListPrototype;
// Test 代码 
var arr = new ArrayList([3, 6, 5, 'xyz', 'foo', 'xyz']); 

console.log(arr.contains('xyz')); 
console.log(arr.indexOf('xyz')); 
console.log(arr.lastIndexOf('xyz')); 
console.log(arr.get(2)); 
arr.addAll([1, 2, 3]); 
console.log(arr);

在JavaScript中构建ArrayList示例代码

上面代码实现了 一部分 ,还有优化地方,

以后 有时间 写 JavaScript 模拟 实现 Tree , Stack ,Queue ,Map 等数据结构的类。

Javascript 相关文章推荐
JQuery为textarea添加maxlength属性并且兼容IE
Apr 25 Javascript
js函数返回多个返回值的示例代码
Nov 05 Javascript
一个网页标题title的闪动提示效果实现思路
Mar 22 Javascript
jQuery中remove()方法用法实例
Dec 25 Javascript
jQuery中get()方法用法实例
Dec 27 Javascript
jquery图片切换实例分析
Apr 15 Javascript
jQuery对JSON数据进行排序输出的方法
Jun 24 Javascript
jQuery常用知识点总结以及平时封装常用函数
Feb 23 Javascript
微信小程序 网络API发起请求详解
Nov 09 Javascript
微信小程序canvas写字板效果及实例
Jun 15 Javascript
jQuery扩展_动力节点Java学院整理
Jul 05 jQuery
Vue动态获取width的方法
Aug 22 Javascript
取得元素的左和上偏移量的方法
Sep 17 #Javascript
JS实现OCX控件的事件响应示例
Sep 17 #Javascript
javascript快速排序算法详解
Sep 17 #Javascript
js生成的验证码的实现与技术分析
Sep 17 #Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
Sep 17 #Javascript
node.js中使用q.js实现api的promise化
Sep 17 #Javascript
Javascript判断文件是否存在(客户端/服务器端)
Sep 16 #Javascript
You might like
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
用PHP生成excel文件到指定目录
2015/06/22 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
js玩一玩WSH吧
2007/02/23 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
解析Python编程中的包结构
2015/10/25 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
普通院校学生的自荐信
2013/11/27 职场文书
微笑服务演讲稿
2014/05/13 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
酒店员工手册范本
2015/05/14 职场文书
心灵点滴观后感
2015/06/02 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js