1.0.7 • Published 10 months ago

lux-data-structure v1.0.7

Weekly downloads
-
License
ISC
Repository
-
Last release
10 months ago

lux-data-structure介绍

本包拓展了JavaScript的基础数据结构,新增了栈(Stack)结构,后续将逐步扩充更多的数据结构


栈(Stack)结构实现

本包的栈(Stack)底层采用WeakMap实现基础数据结构,优点如下

  • 数据私有化

WeakMap 提供了一种有效的方式来实现数据私有化。通过将私有数据存储在 WeakMap 中,并使用实例对象作为键,可以确保这些数据只能通过类的内部方法访问和修改,而无法从外部直接访问。

  • 防止命名冲突

使用 WeakMap 可以避免命名冲突。因为私有数据存储在 WeakMap 中,而不是直接作为类的属性存在,开发者不需要担心私有属性的名称与类的其他属性或方法发生冲突。

  • 垃圾回收优化

WeakMap 的键是弱引用,这意味着如果没有其他引用指向该对象实例,垃圾回收机制可以回收该对象。这样,即使对象实例被销毁,它对应的私有数据也会被自动清理,从而防止内存泄漏。

  • 数据隔离

每个实例的私有数据是完全隔离的。即使有多个实例,它们之间的私有数据也不会相互干扰。每个实例都有自己独立的私有数据存储,确保数据的独立性和安全性。

  • 简化代码

使用 WeakMap 可以使代码更简洁和易于维护。开发者不需要手动管理私有属性的访问权限,只需通过 WeakMapgetset 方法来访问和修改私有数据。

栈(Stack)结构的方法

push(element)

将一个元素压入栈顶。

  • 参数

    • element:要添加到栈顶的元素。
  • 示例

    stack.push(1);

pop()

移除并返回栈顶的元素。如果栈为空,返回 undefined

  • 返回

    • 栈顶元素或 undefined
  • 示例

    console.log(stack.pop()); // 输出: 3

peek()

返回栈顶的元素,但不移除它。如果栈为空,返回 undefined

  • 返回

    • 栈顶元素或 undefined
  • 示例

    console.log(stack.peek()); // 输出: 2

isEmpty()

检查栈是否为空。

  • 返回

    • true 如果栈为空,否则 false
  • 示例

    console.log(stack.isEmpty()); // 输出: false

size()

返回栈的元素个数。

  • 返回

    • 栈中元素的数量。
  • 示例

    console.log(stack.size()); // 输出: 2

clear()

清空栈。

  • 示例

    stack.clear();

1.0.7

10 months ago

1.0.6

10 months ago

1.0.5

10 months ago

1.0.4

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago