在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小游戏实现代码
Aug 19 Javascript
jquery异步请求实例代码
Jun 21 Javascript
js切换光标示例代码
Oct 10 Javascript
Node.js开源应用框架HapiJS介绍
Jan 14 Javascript
全面理解JavaScript中的闭包
May 12 Javascript
AngularJS过滤器filter用法总结
Dec 13 Javascript
微信小程序 数据交互与渲染实例详解
Jan 21 Javascript
详解Vue单元测试Karma+Mocha学习笔记
Jan 31 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
Apr 28 Javascript
javascript中undefined的本质解析
Jul 31 Javascript
使用webpack搭建vue环境的教程详解
Dec 31 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 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更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
python中pycurl库的用法实例
2014/09/30 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python切片工具pillow用法示例
2018/03/30 Python
python数据结构学习之实现线性表的顺序
2018/09/28 Python
Django 内置权限扩展案例详解
2019/03/04 Python
python程序变成软件的实操方法
2019/06/24 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
python爬虫要用到的库总结
2020/07/28 Python
python Xpath语法的使用
2020/11/26 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
工业学校毕业生自荐信范文
2014/01/03 职场文书
股东协议书范本
2014/04/14 职场文书
农村党员一句话承诺
2014/05/30 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
写给领导的感谢信
2015/01/22 职场文书
安全生产协议书
2016/03/22 职场文书
如何在Python中创建二叉树
2021/03/30 Python
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis