JavaScript数据结构笔记 - 数组

静态数组(Static Array)vs 动态数组(Dynamic Array)

静态数组是一个固定长度的数组,内含n个可索引的(indexable)元素,索引范围是[0, n-1]。

相反,动态数组的长度不固定。

复杂度

JavaScript数据结构笔记 - 数组

*静态数组由于长度固定,无法进行插入、结尾插入、删除操作。

手写动态数组

数据结构

const fruit = {
    length: 4,
    data: {
        0: "苹果",
        1: "香蕉",
        2: "桃子",
        3: "菠萝"
    }
}

实现

// 定义MyArray类
class MyArray {
  // 构造器
  constructor() {
    // length属性保存数组的长度
    this.length = 0;
    // data属性保存每个元素
    this.data = {};
  }
  // push或append函数,在数组结尾插入新元素
  push(element) {
    this.data[this.length] = element;
    this.length++;
    return this.data;
  }
  // insertAt函数,在给定位置插入新元素
  insertAt(item, index) {
    for (let i = this.length; i >= index; i--) {
      this.data[i] = this.data[i - 1];
    }
    this.data[index] = item;
    this.length++;
    return this.data;
  }
  // deleteAt函数,删除给定位置的元素
  deleteAt(index) {
    for (let i = index; i < this.length - 1; i++) {
      this.data[i] = this.data[i + 1];
    }
    delete this.data[this.length - 1];
    this.length--;
    return this.data;
  }
  // getElementAtIndex函数,返回给定位置的元素
  getElementAtIndex(index) {
    return this.data[index];
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容