js实现list
在JavaScript中实现列表(List)可以通过多种方式完成,以下是常见的实现方法:
使用数组(Array)
数组是JavaScript中最常用的列表实现方式,支持动态增删元素和多种内置方法。
// 创建列表
const list = [1, 2, 3];
// 添加元素
list.push(4); // 末尾添加
list.unshift(0); // 开头添加
// 删除元素
list.pop(); // 删除末尾
list.shift(); // 删除开头
// 遍历列表
list.forEach(item => console.log(item));
使用链表(Linked List)
如果需要更灵活的插入和删除操作,可以手动实现链表结构。
class ListNode {
constructor(value, next = null) {
this.value = value;
this.next = next;
}
}
class LinkedList {
constructor() {
this.head = null;
}
// 添加节点
append(value) {
const newNode = new ListNode(value);
if (!this.head) {
this.head = newNode;
return;
}
let current = this.head;
while (current.next) {
current = current.next;
}
current.next = newNode;
}
// 遍历链表
traverse() {
let current = this.head;
while (current) {
console.log(current.value);
current = current.next;
}
}
}
const list = new LinkedList();
list.append(1);
list.append(2);
list.traverse();
使用Set
如果列表需要保证元素唯一性,可以使用Set数据结构。
const uniqueList = new Set();
uniqueList.add(1);
uniqueList.add(2);
uniqueList.add(1); // 重复元素不会添加
console.log([...uniqueList]); // 转换为数组
使用Map
如果需要键值对形式的列表,可以使用Map。
const mapList = new Map();
mapList.set('key1', 'value1');
mapList.set('key2', 'value2');
console.log(mapList.get('key1')); // 获取值
使用生成器实现惰性列表
对于大数据量的列表,可以使用生成器实现惰性求值。
function* lazyList() {
yield 1;
yield 2;
yield 3;
}
const list = lazyList();
console.log(list.next().value); // 1
console.log(list.next().value); // 2
选择建议
- 需要快速随机访问和内置方法时,使用数组。
- 需要频繁插入和删除操作时,考虑链表。
- 需要唯一性时,使用Set。
- 需要键值对时,使用Map。
- 处理大数据量时,考虑生成器实现惰性列表。







