1、TypedArray
ArrayBuffer对象作为内存区域可以存放多种类型的数据。同一段内存,不同数据有不同的解读方式,这种解读方式称为“视图(view)”。ArrayBuffer有两种类型的视图,一种是类型化数组视图(TypedArray),另一种是数据视图(DataView)。类型化数组视图的数组成员都是同一个数据类型,后者的数组成员可以是不同的数据类型。
TypedArray视图一共有9种类型,每一种视图都是一个构造函数。
这些视图实现了数组接口,均有length属性,都可以使用方括号运算符来获取单个元素,所有数组方法都可以在其上面使用。普通数组和TypedArray数组的差异主要在以下方面:
- 1、TypedArray数组的所有成员都是同一种类型。
- 2、TypedArray数组的成员是连续的,不会有空位,不存在稀疏数组的情况。
- 3、TypedArray数组成员的默认值是0。
TypedArray数组只是一个视图,本身不存储数据,它的数据都存储在底层的ArrayBuffer对象中,要获取底层对象必须使用buffer属性
数据结构 - 栈
定义:
只允许在一端进行插入或删除操作的线性表。首先,栈是一种线性表,但限定这种线性表只能在某一段进行插入和删除操作
栈顶(Top):线性表允许进行插入和删除的一端。
栈底(Bottom):固定的,不允许进行插入和删除的另一端
空栈:不含任何
栈的基本操作
- InitStack(&S):初始化空栈S
- StackEmpty(S):判断一个栈是否为空
- Push(&S,x):进栈,若栈未满,则将x加入使之成为新栈顶
- Pop(&S,&x):出栈,若栈非空,则将栈顶元素,并用x返回
- GetTop(S,&x):读栈顶元素,若栈顶元素非空,则用x返回栈顶元素
- DestroyStack(&S):销毁栈,并释放栈S占用的存储空间
3、二叉树
<script>
// 创建二叉树的节点
// 二叉树包含:自身数据(data),左节点(left),右节点(right),显示自己的数据(show)
function Node(data,left,right){
this.data = data;
this.left = left;
this.right = right;
this.show = show;
}
// 声明二叉树的构造函数
// 二叉搜索树(binary search tree),也叫二叉排列树
function BST() {
this.root = null; //默认节点为null
this.insert = insert; // 插入操作
this.inOrder = inOrder; // 中序遍历
this.getMin = getMin; // 找出最小值
this.getMax = getMax; // 找出最大值
this.find = find; // 找出指定数据
}
</script>
4、set数据结构
<script>
// ES6提供了新的数据结构Set
// 类似于数组,成员的值都是唯一的,没有重复的
// 创建Set数据结构
// const s = new Set()
// Set函数可以接受一个数组作为参数,用来初始化
const x = new Set([1,4,6,8,3,6])
console.log(x); // Set(5) {1, 4, 6, 8, 3}
console.log(x.size); // 5
// 利用Set进行数组去重
let arr = [1,44,35,67,35,44]
let set = new Set(arr)
console.log(set); // Set(4) {1, 44, 35, 67}
console.log([...set]); // [1, 44, 35, 67]
</script>
5、set增删改查方法
<script>
const x = new Set();
// add添加
x.add('s').add('l')
console.log(x.size); // 2
console.log(x); // Set(2) {'s', 'l'}
// delete:删除
const result = x.delete('l'); // 删除成功后返回布尔值 true
console.log(result); // 删除成功后返回布尔值 true
console.log(x.size); // 1
console.log(x); // Set(1) {'s'}
// has:判断是否是其成员 have-has
const resultOne = x.has('s')
const resultTwo = x.has('l')
console.log(resultOne); // true
console.log(resultTwo); // flase
// clear:清空成员
x.clear()
console.log(x.size); // 0
</script>
记事本
<body>
<div id="app">
<h2>记事本</h2>
<div class="main">
<input type="text" v-model="color" @keyup.enter="add" placeholder="内容在这里输入"/>
<ul>
<li v-for="(item,index) in list" id="list">
<div class="content"><span id="1">{{index+1}}.{{item}}</span> </div>
<button @click="remove(index)">❌</button>
</li>
</ul>
<p class="empty" v-if="list.length==0">暂无内容...</p>
</div>
<div class="bottom">
<span>合计:{{list.length}}</span>
<span @click="list=[]">清空</span>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
color:'',
list: [
{ id: 1,color: '黑色'},
{ id: 2,color: '紫色'},
{ id: 3,color: '红色'},
// { id: 4,color: '绿色'},
],
},
methods: {
add() {
if (this.color) {
this.list.unshift({id: Date.now(), color: this.color })
this.color = ''
}
},
remove(id) {
this.list = this.list.filter(v => v.id !== id)
},
},
})
</script>
</body>