美文网首页读书
JavaScript数据结构笔记 - 数组

JavaScript数据结构笔记 - 数组

作者: 未定义变量 | 来源:发表于2021-04-14 22:12 被阅读0次

静态数组(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];
  }
}

相关文章

网友评论

    本文标题:JavaScript数据结构笔记 - 数组

    本文链接:https://www.haomeiwen.com/subject/ihtrlltx.html