JavaScript实现的List(集合)类

 2023-09-16 阅读 18 评论 0

摘要:引言 在后端语言(如C#、Java)中,一般具有List类型,它是一种集合类型,可以放置某个类型的数据;它与数组(Array)类似,但是相对于数组,它又会有很多更加便捷的API,如:add、remove、clear等

引言

在后端语言(如C#、Java)中,一般具有List类型,它是一种集合类型,可以放置某个类型的数据;它与数组(Array)类似,但是相对于数组,它又会有很多更加便捷的API,如:add、remove、clear等方法;

java list集合用法、JavaScript中是没有原生的支持List类型的,所以大家在想要使用的时候,都会去自己封装一个类,然后去实现它,下面我也给出一种实现方式,这个实现满足了基本的API,而且是在JS Array类型的基础上扩展的,也可以在它上面使用Array的方法,另外一大 亮点 是可以直接引用length属性获得集合的元素个数。

代码实现

//兼容IE8-,为Array原型添加indexOf方法;
if (!Array.prototype.indexOf) {Array.prototype.indexOf = function (item) {var index = -1;for (var i = 0; i < this.length; i++) {if (this[i] === item) {index = i;break;}}return index;}
}//List类实现
var List = function (args) {var self = this;if (List.isArray(args)) {self = args;}self.constructor = List;//向集合追加新元素self.add = function (item) {self.push(item);return self;};//在指定索引处插入新元素self.insert = function (index, item) {self.splice(index, 0, item);return self;};//删除元素,仅删除第一个索引处的元素self.remove = function (item) {var index = self.indexOf(item);if (index != -1) {return self.splice(index, 1)[0];} else {return undefined;}};//删除元素,如果元素在多个索引处存在,则全部删除self.removeAll = function (item) {var result = [];var removeItem = undefined;do {removeItem = self.remove(item);if (removeItem !== undefined) {result.push(removeItem);}} while (removeItem !== undefined);return result;};//根据index删除元素self.removeAt = function (index) {if (index != -1) {return self.splice(index, 1)[0];} else {return undefined;}};//判断元素是否包含在集合中self.contains = function (item) {return self.indexOf(item) != -1;};//清空集合的所有元素self.clear = function () {return new List(self.splice(0, self.length));};self.size = function () {return self.length;};if (List.isArray(args)) {return self;} else if (arguments.length > 0) {for (var i = 0; i < arguments.length; i++) {self.add(arguments[i]);}}
};
List.isArray = Array.isArray || function (target) {return Object.prototype.toString.call(target) === "[object Array]";
};/*下面这段代码是关键,它设定了List类的原型是Array的原型(继承关系),所以List类也同样拥有Array的特征*/
List.prototype = Array.prototype;

改进

这段代码还是有改进的空间的,就是还可以添加一些其他的便捷方法,不过我就先实现到这里,后续的改进我会更新这段代码。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/70092.html

上一篇:Go 四篇

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息