静态数组(Static Array)vs 动态数组(Dynamic Array)
静态数组是一个固定长度的数组,内含n个可索引的(indexable)元素,索引范围是[0, n-1]。
相反,动态数组的长度不固定。
复杂度
*静态数组由于长度固定,无法进行插入、结尾插入、删除操作。
手写动态数组
数据结构
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];
}
}