JS
一.数据的储存
- 原始类型:存储在占内存中,每次开辟的空间都是固定大小
- 引用类型:存储在堆内存中,所占的空间大小是根据内容动态变化;如果创建一个对象会存储在堆内存,会自动生成一个地址(指针),包含函数、对象、数组
- null:空地址,不指向任何引用类型的数据。
- 引用类型数据的销毁:不被任何的地址所指向即可销毁,只需要赋值为null。
二.数组
数组是一组数据的集合,每一个数据称为元素
1.创建数组
(1)数组字面量
var arr = [ 元素1, 元素2, 元素3,... ]
(2)内置构造函数
var arr1 = new Array(元素1, 元素2, 元素3,..)
var arr2 = new Array(3) //初始化长度,后期需要手动添加每一个元素,可以添加更多个元素
2.访问数组元素
下标(索引):JS为每个元素自动添加的编号,是从0开始的一个整数
语法格式 数组名称[下标]
3.数组的长度
数组.length 获取数组元素个数
在数组的末尾添加元素 数组[ 数组.length ] = 值
4.数组分类
**索引数组:**以>=0的整数作为下标,可以通过length获取长度。
**关联数组:**以字符串作为下标,需要单独添加元素,不能使用length获取长度。
对比数组和对象的区别
两者都可以存储一组数据,对象是通过属性,数组是通过元素;
对象中这一组是无序的,不分先后顺序; 数组中这一组是有序的,可以进行排序。
5.遍历数组元素
通过循环依次访问数组中每个元素
// for-in
for(var k in 数组){
//k 下标
//数组[k] 下标对应元素
}
//for循环(推荐方式)
for(var i = 0;i < 数组.length;i++) {
//i 下标
//数组[i] 下标对应元素
}
案列
var arr = [82, 93, 74, 63]
for(var i = 0, sum = 0; i < arr.length; i++) {
// console.log(i, arr[i])
// 把每个成绩加到sum
sum += arr[i]
}
console.log( sum, sum/arr.length )
6.数组API
API:JS中预定义的函数和方法
数组API就是数组中提供好的方法,可以直接调用
-
toString() 将数组转为字符串,按照逗号分割
-
join() 将数组转为字符串,默认按照逗号分割,可以指定分隔符
-
concat(arr2,arr3...) 拼接多个数组,返回拼接后的结果
-
reverse() 翻转数组元素,返回翻转后的数组,原数组会发生变化
-
slice(start, [end]) 截取数组元素,start开始的下标,end结束的下标,不包含end本身;end为空 会截取到最后;如果下标为负数表示倒数;返回截取的数组
- splice(start, [count], [v1],…) 删除数组元素,start开始的下标,count删除的长度;count为空会删除到最后;下标为负数表示倒数;v1,…表示删除后要补充的元素;返回删除的元素,原数组会发生变化。
-
sort() 对数组元素进行排序,默认是按照首个字母的Unicode码排列
- push() 在数组的末尾添加元素,返回数组的长度,原数组会发生变化
- pop() 删除数组末尾的一个元素,返回删除的元素,原数组会发生变化
- unshift() 在数组的开头添加元素,返回数组的长度,原数组会发生变化
- shift() 删除数组开头的一个元素,返回删除的元素,原数组会发生变化
-
indexOf() 检测数组中是否含有某个元素,存在返回下标,不存在返回-1
其它API: https://www.w3school.com.cn/js/js_array_methods.asp
2.二维数组
数组中的元素还是数组,用于对数据进行二次分类
[ [元素1, 元素2], [ 元素3, 元素4 ],… ]
三、字符串对象
包装对象:目的是为了让原始类型的值像对象一样具有属性和方法;JS中提供了三种包装对象,分别是字符串对象、数字对象、布尔对象
new String() // 将一个字符串包装为对象
String() // 将一个值强制转换为字符串
1.转义字符
改变字符本身的意义
\' // 将一个具有特殊意义的引号转义为普通引号
\n // 将字符n转义为换行符
\t // 将字符t转义为制表符,一组连续空格
2.API
length 获取字符串的长度
charAt() 获取下标对应的字符,也可以使用数组的格式 字符串[下标]
indexOf() 检测字符串中是否含有某个字符串,返回的是找到的第1个的下标,找不到返回-1
lastIndexOf() 检测字符串中是否含有某个字符串,返回的是找到的最后1个的下标,找不到返回-1
slice(start, [end]) 截取字符串,start开始的下标,end结束的下标,不包含end这一项;end为空会截取到最后;下标为负数表示倒数
toUpperCase() 将英文字母转大写
toLowerCase() 将英文字母转小写
split() 将一个字符串按照指定的字符转为数组
四、Math对象
提供了一组数学相关的API;是一个特殊的对象,不需要使用new来创建就可以直接调用API
PI 获取圆周率
abs() 计算绝对值
ceil() 向上取整
floor() 向下取整
round() 四舍五入取整
pow(x,y) 计算x的y次方
max() 获取一组数字最大值
min() 获取一组数字最小值
random() 获取随机数,范围0~1之间 >=0 <1
console.log(Math.random()); //0-1之间的随机数
console.log(Math.round(Math.random()*10)); //0-10之间的随机数