在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 等数据结构的类。

相关文章

  • js apply/call/caller/callee/bind使用方法与区别分析

    js apply/call/caller/callee/bind使用方法与区别分析

    js apply/call/caller/callee/bind使用方法与区别分析,需要的朋友可以参考下。
    2009-10-10
  • JavaScript中ES6 Babel正确安装过程

    JavaScript中ES6 Babel正确安装过程

    这篇文章主要介绍了JavaScript中ES6 Babel正确安装过程的相关资料,需要的朋友可以参考下
    2016-07-07
  • JavaScript实现左右下拉框动态增删示例

    JavaScript实现左右下拉框动态增删示例

    本篇文章主要介绍了JavaScript实现左右下拉框动态增删示例,可以对下拉框进行删除和增加,非常具有实用价值,需要的朋友可以参考下。
    2017-03-03
  • 再谈JavaScript异步编程

    再谈JavaScript异步编程

    再谈JavaScript异步编程,简单描述了几种JavaScript异步编程模式,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • webpack-cli在webpack打包中的作用小结

    webpack-cli在webpack打包中的作用小结

    webpack 是打包代码时依赖的核心内容,而 webpack-cli 是一个用来在命令行中运行 webpack 的工具,那么webpack-cli在webpack打包中的作用是什么,本文就详细的介绍一下,感兴趣的可以了解一下
    2022-04-04
  • 实现无刷新联动例子汇总

    实现无刷新联动例子汇总

    最近在用asp.net做项目的时候,遇到需要实现无刷新联动的需求,度娘了一下,这里汇总一下几个比较实用的例子,有需要的小伙伴可以参考下。
    2015-05-05
  • uni-app使用Vite.config.js配置文件的超详细教程

    uni-app使用Vite.config.js配置文件的超详细教程

    这篇文章主要给大家介绍了关于uni-app使用Vite.config.js配置文件的超详细教程,在uniapp开发中,vue.config.js是配置webpack的关键文件之一,也可以说是uniapp项目自定义配置的中心,需要的朋友可以参考下
    2023-12-12
  • 小米公司JavaScript面试题

    小米公司JavaScript面试题

    这篇文章主要介绍了小米公司JavaScript面试题的个人解题方法,需要的朋友可以参考下
    2014-12-12
  • JavaScript数组实例的9个方法

    JavaScript数组实例的9个方法

    这篇文章主要介绍了JavaScript数组实例的9个方法,文章围绕主题展开详细的内容介绍没具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • 基于javascript数组实现图片轮播

    基于javascript数组实现图片轮播

    这篇文章主要为大家详细介绍了基于javascript数组实现图片轮播的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05

最新评论