在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 相关文章推荐
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
Dec 24 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
JavaScript中遍历对象的property的3种方法介绍
Dec 30 Javascript
详解JavaScript中void语句的使用
Jun 04 Javascript
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
JS+CSS相对定位实现的下拉菜单
Oct 06 Javascript
JS创建事件的三种方法(实例代码)
May 12 Javascript
javascript 广告移动特效的实现代码
Jun 25 Javascript
javascript 跨域问题以及解决办法
Jul 17 Javascript
浅谈FastClick 填坑及源码解析
Mar 02 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 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 syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
js setTimeout 常见问题小结
2013/08/13 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
js中function()使用方法
2013/12/24 Javascript
JavaScript函数详解
2014/11/17 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
Python 从相对路径下import的方法
2018/12/04 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
酒店总经理职务说明书
2014/02/26 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
服装设计专业求职信
2014/06/16 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
财务会计实训报告
2014/11/05 职场文书
银行自荐信怎么写
2015/03/05 职场文书
创业计划书之便利店
2019/09/05 职场文书
导游词之山海关
2019/12/10 职场文书
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android