DSArray

查看源代码 (opens new window)

JS中的数组[]非常灵活,其自带了push, pop等一系列方法,并且长度可变。但对于TDSCore来说,这无益于对数据结构与算法进行严格实现这一目标。于是,为了提高代码的严谨程度,我使用ES5的Proxy技术以及TS的装饰器实现了一个模拟传统数组特性的数据结构DSArray<E>。 相比JS数组,其具有访问控制的特性:

  • 不支持越界访问
  • 不支持动态变长。

# 引入

import {DSObject} from "tdscore"
//or
const DSObject = require("tdscore").DSObject

# 定义

class DSArray<E> extends DSObject implements IIterable<E>{
    [index:number]:E
    readonly length:number
    getIterator():IIterator<E>
}

# DSArray

# 构造函数

DSArray的构造函数接受一个number以用于分配空间。

const array = new DSArray(10)
//typescript
const array = new DSArray<number>(10)

# 索引器

您可以通过下标/索引器的方式直接访问元素

array[0] = 0
console.log(array[0]) // 0
console.log(array[1]) //undefined

array[-1] //error

# 获取长度

array.length//10

# 获取迭代器

查看迭代相关文档

const iterator = array.getIterator()

while(iterator.hasNext()){
    console.log(iterator.next())
}