在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 相关文章推荐
JS查看对象功能代码
Apr 25 Javascript
Javascript 面向对象特性
Dec 28 Javascript
JQUBar 基于JQUERY的柱状图插件
Nov 23 Javascript
js 如何实现对数据库的增删改查
Nov 23 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
Nov 15 Javascript
JavaScript实现拖拽网页内元素的方法
Apr 15 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
May 03 Javascript
Bootstrap模块dropdown实现下拉框响应
May 22 Javascript
深入理解jQuery事件绑定
Jun 02 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
Jul 11 Javascript
JS对日期操作封装代码实例
Nov 08 Javascript
react项目从新建到部署的实现示例
Feb 19 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
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
PHP简单日历实现方法
2016/07/20 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
jQuery实现手风琴特效
2021/01/11 jQuery
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
Django发送html邮件的方法
2015/05/26 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
2015元旦标语横幅
2014/12/09 职场文书
蓬莱阁导游词
2015/02/04 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js