在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 相关文章推荐
JavaScript 组件之旅(四):测试 JavaScript 组件
Oct 28 Javascript
轻量级 JS ToolTip提示效果
Jul 20 Javascript
Dom 结点创建 基础知识
Oct 01 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
利用JS来控制键盘的上下左右键(示例代码)
Dec 14 Javascript
详解JavaScript中的客户端消息框架设计原理
Jun 24 Javascript
jquery 动态增加删除行的简单实例(推荐)
Oct 12 Javascript
js基于myFocus实现轮播图效果
Feb 14 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
vue.js,ajax渲染页面的实例
Feb 11 Javascript
微信小程序实现弹出菜单动画
Jun 21 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 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中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
php使用ICQ网关发送手机短信
2013/10/30 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
php socket通信简单实现
2016/11/18 PHP
破解Session cookie的方法
2006/07/28 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
Python打印斐波拉契数列实例
2015/07/07 Python
TensorFlow实现创建分类器
2018/02/06 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
财务经理的岗位职责
2013/12/17 职场文书
一年级学生评语大全
2014/04/21 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
node快速搭建后台的实现步骤
2022/02/18 NodeJs