当前位置:首页 > JavaScript

js实现列表

2026-02-28 18:18:47JavaScript

使用数组创建列表

在JavaScript中,数组是最常用的列表实现方式。可以通过字面量或构造函数创建:

// 字面量方式
const list1 = [1, 2, 3, 'a', 'b'];

// 构造函数方式
const list2 = new Array(1, 2, 3);

数组提供多种操作方法:

  • push() 添加元素到末尾
  • pop() 移除末尾元素
  • shift() 移除首元素
  • unshift() 添加元素到开头
  • splice() 在指定位置添加/删除元素

链表数据结构实现

对于需要频繁插入/删除的场景,可以手动实现链表:

class ListNode {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

class LinkedList {
  constructor() {
    this.head = null;
    this.size = 0;
  }

  add(value) {
    const node = new ListNode(value);
    if (!this.head) {
      this.head = node;
    } else {
      let current = this.head;
      while (current.next) {
        current = current.next;
      }
      current.next = node;
    }
    this.size++;
  }
}

使用Map/Set实现特殊列表

当需要唯一值或键值对结构时:

// Set实现值唯一的列表
const uniqueList = new Set();
uniqueList.add(1);
uniqueList.add(2);
uniqueList.add(1); // 不会被重复添加

// Map实现键值列表
const kvList = new Map();
kvList.set('key1', 'value1');
kvList.set('key2', 'value2');

使用生成器实现惰性列表

对于大数据量的懒加载场景:

function* generateList() {
  let i = 0;
  while (true) {
    yield i++;
    if (i > 10000) break;
  }
}

const lazyList = generateList();
console.log(lazyList.next().value); // 0
console.log(lazyList.next().value); // 1

性能优化建议

  • 大数据量查询优先考虑数组
  • 频繁插入删除考虑链表结构
  • 需要唯一性使用Set
  • 现代JavaScript引擎对数组优化极好,多数场景应优先使用原生数组

js实现列表

标签: 列表js
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…