在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 相关文章推荐
escape、encodeURI、encodeURIComponent等方法的区别比较
Dec 27 Javascript
妙用Jquery的val()方法
Jun 27 Javascript
Json序列化和反序列化方法解析
Dec 19 Javascript
JavaScript Date对象详解
Mar 01 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
Mar 29 jQuery
详解angularjs中如何实现控制器和指令之间交互
May 31 Javascript
微信小程序 WXML节点信息查询详解
Jul 29 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
Vue作用域插槽实现方法及作用详解
Jul 08 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 中include()与require()的对比
2006/10/09 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
JS常用函数使用指南
2014/11/23 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
Python中的相关分析correlation analysis的实现
2019/08/29 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
Python通过Pillow实现图片对比
2020/04/29 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
交通专业个人自荐信格式
2013/09/23 职场文书
女子职高个人自荐书
2014/02/01 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
合作意向书范本
2019/04/17 职场文书
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers