在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 版元素拖拽原型代码
Apr 25 Javascript
用JS实现一个TreeMenu效果分享
Aug 28 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
Apr 11 Javascript
纯JS实现根据CSS的class选择DOM
Mar 22 Javascript
Javascript中数组sort和reverse用法分析
Dec 30 Javascript
js中利用tagname和id获取元素的方法
Jan 03 Javascript
JS Attribute属性操作详解
May 19 Javascript
利用types增强vscode中js代码提示功能详解
Jul 07 Javascript
Angular模板表单校验方法详解
Aug 11 Javascript
基于three.js编写的一个项目类示例代码
Jan 05 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 jQuery
vue + elementUI实现省市县三级联动的方法示例
Oct 29 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 和 MySQL 基础教程(二)
2006/10/09 PHP
PHP 常见郁闷问题答解
2006/11/25 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
Smarty模板语法详解
2019/07/20 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
js单例模式详解实例
2013/11/21 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python魔术方法详解
2015/02/14 Python
解析Python中的异常处理
2015/04/28 Python
Python 多线程的实例详解
2017/09/07 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
python3 反射的四种基本方法解析
2019/08/26 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
python中元组的用法整理
2020/06/15 Python
Python 在函数上添加包装器
2020/07/28 Python
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
应届生煤化工求职信
2013/10/21 职场文书
法人代表证明书格式
2014/10/01 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python