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;
};作者最新文章
JS大数值转字符串出现科学计数法怎么办
2026-11-05 17:09:21
JS split切割后出现空字符串怎么过滤
2026-11-05 16:00:30
在 React 或 Vue 项目中封装使用 JS 节流防抖
2026-11-05 15:27:29
JavaScript中怎么将带小数的字符串转为整数?
2026-11-05 14:32:38
怎么用JavaScript策略模式重构电商促销计算逻辑?
2026-11-05 14:01:09
