在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 相关文章推荐
JS target与currentTarget区别说明
Aug 28 Javascript
jQuery版仿Path菜单效果
Dec 15 Javascript
用js格式化金额可设置保留的小数位数
May 09 Javascript
javascript表单验证和Window详解
Dec 11 Javascript
老生常谈JavaScript数组的用法
Jun 10 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
React创建组件的三种方式及其区别
Jan 12 Javascript
利用js给datalist或select动态添加option选项的方法
Jan 25 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
May 14 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
Jul 31 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
Dec 19 Javascript
vue实现多条件和模糊搜索功能
May 28 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
PHP5 安装方法
2006/10/09 PHP
杏林同学录(二)
2006/10/09 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
Open and Print a Word Document
2007/06/15 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
Python open()文件处理使用介绍
2014/11/30 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python3实现绘制二维点图
2019/12/04 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
华三通信H3C面试题
2015/05/15 面试题
医学生实习自荐信
2013/10/01 职场文书
《白鹅》教学反思
2014/04/13 职场文书
党员个人对照检查材料
2014/10/01 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
欢迎词怎么写
2015/01/23 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
Redis入门教程详解
2021/08/30 Redis