当前位置:首页 > JavaScript

js实现list

2026-01-30 13:04:11JavaScript

在JavaScript中实现列表(List)

JavaScript中没有内置的List数据结构,但可以通过数组(Array)或对象(Object)来模拟列表的功能。以下是几种常见的实现方式:

使用数组(Array)

数组是JavaScript中最常用的列表实现方式,提供了丰富的内置方法。

js实现list

// 创建列表
const list = [1, 2, 3, 4, 5];

// 添加元素
list.push(6); // 末尾添加
list.unshift(0); // 开头添加

// 删除元素
list.pop(); // 删除末尾元素
list.shift(); // 删除开头元素

// 访问元素
console.log(list[2]); // 输出: 3

// 遍历列表
list.forEach(item => console.log(item));

使用对象(Object)实现链表

如果需要更复杂的列表结构(如链表),可以使用对象来实现。

// 链表节点
class ListNode {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

// 链表实现
class LinkedList {
  constructor() {
    this.head = null;
    this.tail = null;
  }

  // 添加节点
  append(value) {
    const newNode = new ListNode(value);
    if (!this.head) {
      this.head = newNode;
      this.tail = newNode;
    } else {
      this.tail.next = newNode;
      this.tail = newNode;
    }
  }

  // 遍历链表
  traverse() {
    let current = this.head;
    while (current) {
      console.log(current.value);
      current = current.next;
    }
  }
}

// 使用示例
const linkedList = new LinkedList();
linkedList.append(1);
linkedList.append(2);
linkedList.append(3);
linkedList.traverse();

使用数组实现栈(Stack)

如果需要栈这种特殊的列表结构,可以用数组实现。

js实现list

class Stack {
  constructor() {
    this.items = [];
  }

  push(element) {
    this.items.push(element);
  }

  pop() {
    if (this.items.length === 0) return null;
    return this.items.pop();
  }

  peek() {
    return this.items[this.items.length - 1];
  }

  isEmpty() {
    return this.items.length === 0;
  }
}

// 使用示例
const stack = new Stack();
stack.push(1);
stack.push(2);
console.log(stack.pop()); // 输出: 2

使用数组实现队列(Queue)

队列也可以用数组实现,但要注意性能问题。

class Queue {
  constructor() {
    this.items = [];
  }

  enqueue(element) {
    this.items.push(element);
  }

  dequeue() {
    if (this.isEmpty()) return null;
    return this.items.shift();
  }

  front() {
    if (this.isEmpty()) return null;
    return this.items[0];
  }

  isEmpty() {
    return this.items.length === 0;
  }
}

// 使用示例
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
console.log(queue.dequeue()); // 输出: 1

使用ES6的Map或Set

对于需要唯一值或键值对的列表,可以使用Map或Set。

// Set实现唯一值列表
const uniqueList = new Set();
uniqueList.add(1);
uniqueList.add(2);
uniqueList.add(1); // 不会重复添加
console.log([...uniqueList]); // 输出: [1, 2]

// Map实现键值对列表
const kvList = new Map();
kvList.set('a', 1);
kvList.set('b', 2);
console.log(kvList.get('a')); // 输出: 1

注意事项

  • 数组是最简单直接的列表实现方式,适合大多数场景
  • 链表适合频繁插入删除的场景,但JavaScript中性能优势不明显
  • 栈和队列是特殊的列表结构,可以根据需求选择实现
  • Map和Set提供了额外的功能,如唯一性和键值对存储

根据具体需求选择合适的实现方式,通常数组就能满足大多数列表操作需求。

标签: jslist
分享给朋友:

相关文章

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…