数组
let array = [1, 2, 3]
栈:
let stack = [1, 2, 3]
// 进栈
stack.push(4)
// 出栈
stcak.pop()
队列:
let queue = [1, 2, 3]
// 进队
queue.push(4)
// 出队
queue.shift()在 JavaScript 中, 数组的存储
class Stack {
constructor(...args){
this.stack = [...args]
}
//
push(...items){
return this.stack.push(...items)
}
pop(){
return this.stack.pop()
}
peek(){
return this.isEmpty() ? undefined : this.stack(this.size() -1)
}
isEmpty(){
return this.size() == 0
}
size(){
return this.stack.length
}
}
快数组(FastElements)
FixedArray 是 V8 实现的一个类似于数组的类,它表示一段连续的内存,可以使用索引直接定位。新创建的空数组默认就是快数组。当数组满(数组的长度达到数组在内存中申请的内存容量最大值)的时候,继续 push 时, JSArray 会进行动态的扩容,以存储更多的元素。
慢数组(SlowElements)
慢数组以哈希表的形式存储在内存空间里,它不需要开辟连续的存储空间,但需要额外维护一个哈希表,与快数组相比,性能相对较差。
例如:向快数组里增加一个大索引同类型值
当往 arr 增加一个 2000 的索引时,arr 被转成慢数组。节省了大量的内存空间(从索引为 2 到索引为 2000)。
用两个栈实现队列
最后更新于
这有帮助吗?