当前位置:首页 > JavaScript

js 实现列表

2026-03-15 08:51:21JavaScript

使用数组创建列表

在JavaScript中,数组是最常见的列表实现方式。数组提供了一系列方法用于操作列表元素。

const list = [1, 2, 3, 4, 5];

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

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

// 访问元素
console.log(list[0]); // 访问第一个元素

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

使用链表实现列表

对于需要频繁插入/删除的场景,链表可能是更好的选择。以下是单向链表的简单实现:

js 实现列表

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++;
  }

  remove(value) {
    let current = this.head;
    let previous = null;

    while (current) {
      if (current.value === value) {
        if (!previous) {
          this.head = current.next;
        } else {
          previous.next = current.next;
        }
        this.size--;
        return true;
      }
      previous = current;
      current = current.next;
    }
    return false;
  }
}

使用Set实现唯一值列表

当需要确保列表元素唯一时,可以使用Set数据结构:

js 实现列表

const uniqueList = new Set();

// 添加元素
uniqueList.add(1);
uniqueList.add(2);
uniqueList.add(1); // 不会重复添加

// 检查存在
console.log(uniqueList.has(1)); // true

// 删除元素
uniqueList.delete(1);

// 转换为数组
const arrayFromSet = [...uniqueList];

使用Map实现键值列表

对于需要键值对的列表结构,可以使用Map:

const keyValueList = new Map();

// 添加元素
keyValueList.set('name', 'John');
keyValueList.set('age', 30);

// 获取元素
console.log(keyValueList.get('name')); // John

// 检查存在
console.log(keyValueList.has('age')); // true

// 删除元素
keyValueList.delete('age');

// 遍历
keyValueList.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

使用生成器实现惰性列表

对于大型数据集,可以使用生成器实现惰性求值的列表:

function* generateSequence(start, end) {
  for (let i = start; i <= end; i++) {
    yield i;
  }
}

const lazyList = generateSequence(1, 100);

// 按需获取值
console.log(lazyList.next().value); // 1
console.log(lazyList.next().value); // 2

// 转换为数组(会立即求值)
const arrayFromGenerator = [...generateSequence(1, 5)];

每种实现方式各有优缺点,应根据具体需求选择合适的列表实现方式。数组适合随机访问,链表适合频繁插入删除,Set适合需要唯一性的场景,Map适合键值对存储,生成器适合处理大型数据集。

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

相关文章

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象进行渲染。以下是几种常见的实现方式: 基础列表渲染 通过 v-for 指令遍历数组,动态生成列表项。 &…

vue实现列表添加

vue实现列表添加

使用 Vue 实现列表添加功能 数据绑定与列表渲染 在 Vue 中,通过 v-for 指令可以轻松实现列表渲染。首先需要定义一个数组来存储列表数据,并在模板中使用 v-for 循环渲染。 <t…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…