在JavaScript中构建ArrayList示例代码

 更新时间:2014年09月17日 16:14:35   投稿:whsnow  
这篇文章主要介绍了在JavaScript中构建ArrayList,很实用,需要的朋友可以参考下

前面我们介绍了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 模拟 实现 Tree , Stack ,Queue ,Map 等数据结构的类。

相关文章

  • JavaScript数据类型学习笔记分享

    JavaScript数据类型学习笔记分享

    这篇文章主要为大家分享了JavaScript数据类型学习笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • js实现网页标题栏闪烁提示效果实例分析

    js实现网页标题栏闪烁提示效果实例分析

    这篇文章主要介绍了js实现网页标题栏闪烁提示效果的方法,以实例形式分析了网上比较常见的实现方法,并对于原理进行分析并加以改进,最后给出了一个具体的应用实例供大家参考,需要的朋友可以参考下
    2014-11-11
  • JavaScript实现的类字典插入或更新方法实例

    JavaScript实现的类字典插入或更新方法实例

    这篇文章主要介绍了JavaScript实现的类字典插入或更新方法,实例分析了javascript针对类字典的插入与更新技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • canvas快速绘制圆形、三角形、矩形、多边形方法介绍

    canvas快速绘制圆形、三角形、矩形、多边形方法介绍

    本文主要介绍了使用canvas来绘制常见的各种图形实例,并且会简单封装一下绘制各图形的方法,最后会分享给大家一个封装好的快速绘制多边形的方法。下面跟着小编一起来看下吧
    2016-12-12
  • Javascript 浏览器事件小结

    Javascript 浏览器事件小结

    Javascript中的事件都是与对象相关联的,而不是语言本身所有,当Javascript在浏览器中运行的时候,事件与每个浏览器实现的DOM模型有关。
    2010-02-02
  • JavaScript脚本语言是什么_动力节点Java学院整理

    JavaScript脚本语言是什么_动力节点Java学院整理

    JavaScript是什么?这篇文章主要介绍了一种广泛用于客户端Web开发的脚本语言JavaScript,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 深入浅出JavaScript中base64编码原理

    深入浅出JavaScript中base64编码原理

    今天翻开旧项目发现挺多图片相关的插件都是用 base64 来显示图片的。谈到 base64,脑海遐想翩翩,思绪回荡之下 base64 瑕瑜互见。这篇文章主要是记录了工作中遇见的问题并加以总结,如有不妥请指正
    2023-02-02
  • 通过微信公众平台获取公众号文章的方法示例

    通过微信公众平台获取公众号文章的方法示例

    这篇文章主要介绍了通过微信公众平台获取公众号文章的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 你可能不知道的JavaScript之this指向详解

    你可能不知道的JavaScript之this指向详解

    理解this之前,先纠正一个观点,this 既不指向函数自身,也不指函数的词法作用域,下面这篇文章主要给大家介绍了关于JavaScript之this指向的相关资料,需要的朋友可以参考下
    2022-05-05
  • 微信小程序实用代码段(收藏版)

    微信小程序实用代码段(收藏版)

    这篇文章主要介绍了微信小程序实用代码段,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12

最新评论