JavaScript 实现 C# List 功能:动态数组封装示例

作者:函数茶馆时间:2026-10-27 23:18:57浏览:227

本文介绍如何使用 JavaScript 原型链模拟 C# 中 List 类的核心功能。通过封装 Array 对象,实现了添加、移除、获取元素、清空列表及子列表截取等常用操作。代码展示了 add、addAll、get、remove、clear、size 和 subList 等方法的实现细节,适用于需要类似 C# List 行为的前端场景。

JavaScript 模拟 C# List 动态数组实现

具体实现代码如下所示:

/*
* List 为大小可变的数组结构
* version: 1.0
 */
function List() {
this.list = new Array();
};
/**
 * 将指定元素追加到列表末尾。
 * @param object 要添加的元素
 */
List.prototype.add = function(object) {
 this.list[this.list.length] = object;
};
/**
 * 将另一个列表的所有元素追加到当前列表末尾。
 * @param listObject 另一个 List 实例
 */
List.prototype.addAll = function(listObject) {
 this.list = this.list.concat(listObject.list);
};
/**
 * 获取指定索引位置的元素。
 * @param index 目标索引
 * @return 该位置上的元素
 */
List.prototype.get = function(index) {
 return this.list[index];
};
/**
 * 移除指定索引位置的元素。
 * @param index 目标索引
 * @return 被移除的元素
 */
List.prototype.removeIndex = function(index) {
 var object = this.list[index];
 this.list.splice(index, 1); 
 return object;
};
/**
 * 移除列表中第一个匹配的元素。
 * @param object 目标元素
 * @return 被移除的元素,若未找到则返回 null
 */
List.prototype.remove = function(object) {
 var i = 0;
 for(; i < this.list.length; i++) { 
 if( this.list[i] === object) {
 break;
 } 
 } 
 if(i >= this.list.length) {
 return null;
 } else {
 return this.removeIndex(i);
 }
};
/**
 * 清空列表中的所有元素。
 */
List.prototype.clear = function() {
 this.list.splice(0, this.list.length);
};
/**
 * 返回列表中元素的总数量。
 * @return 元素个数
 */
List.prototype.size = function() {
 return this.list.length;
};
/**
 * 截取从 start(包含)到 end(不包含)之间的元素,返回新的 List。
 * @param start 起始索引
 * @param end 结束索引
 * @return 包含截取元素的新 List 实例
 */
List.prototype.subList = function(start, end) { 
 var list = new List();
 list.list = this.list.slice(start, end);
 return list;
};
/**
 * 判断列表是否为空。
 * @return 若列表无元素返回 true,否则返回 false
 */
List.prototype.isEmpty = function() {
 return this.list.length == 0;
};
作者最新文章