在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 相关文章推荐
IE与firefox之jquery用法区别
Oct 03 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
May 24 Javascript
Document.location.href和.replace的区别示例介绍
Mar 04 Javascript
jquery操作HTML5 的data-*的用法实例分享
Aug 17 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
利用Javascript仿Excel的数据透视分析功能
Sep 07 Javascript
详解vue-router 2.0 常用基础知识点之router-link
May 10 Javascript
Node.js中多进程模块Cluster的介绍与使用
May 27 Javascript
vue.js加载新的内容(实例代码)
Jun 01 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
Sep 18 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
微信小程序云开发如何使用云函数生成二维码
May 18 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实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
php时间计算相关问题小结
2016/05/09 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
js 函数的副作用分析
2011/08/23 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
使用python Django做网页
2013/11/04 Python
python中使用mysql数据库详细介绍
2015/03/27 Python
python-opencv颜色提取分割方法
2018/12/08 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
什么是会话Bean
2015/05/14 面试题
小学生演讲稿
2014/01/12 职场文书
18岁生日感言
2014/01/12 职场文书
采购经理岗位职责
2014/02/16 职场文书
《口技》教学反思
2014/02/21 职场文书
协议书怎么写
2014/04/21 职场文书
仓库管理计划书
2014/05/04 职场文书
安全生产会议制度
2015/08/06 职场文书
高中班主任心得体会
2016/01/07 职场文书