目录
目录
-
数组(Array)
-
数组也是一个对象
-
用来存储值
-
索引:从0起
-
使用typeof检查会是Object类型
-
数组中的元素可以是任意数据类型
-
数组的存储性能比普通对象要好,在开发中经常使用数组来存储一些数据
-
创建数组
-
var 数组名 = [值1, 值2, 值3, ...];
var 数组名 = new Array(值1, 值2, 值3, ...);
var 数组名 = [值1]; // 创建只有值1的数组
var 数组名 = new Array(值1); // 创建长度为值1的空数组,不常用
-
向数组中添加元素
// 语法
数组[索引] = 值
// 向数组的最后添加元素
数组[数组.length] = 值
-
读取数组中的元素
-
读取的索引如果不存在会返回undefined
-
// 语法
数组[索引]
-
获取数组的长度
-
连续数组:使用length可以获取到连续的数组的长度
-
非连续数组:使用length可以获取到非连续数组的最大索引+1
-
注意:尽量不要创建非连续数组
-
// 语法
数组.length
-
修改length
-
如果修改的length大于原长度,则会把不够的部分填充为空
-
如果修改的length小于原长度,则会把多余的部分删除
-
// 语法
数组.length = 新长度
-
数组的四个常用方法
-
push()方法
-
向数组的末尾添加一个或多个元素
-
返回新数组的新长度
-
-
数组名.push(值1, 值2, 值3, ...)
-
pop()方法
-
该方法可以删除数组的最后一个元素
-
返回被删除的元素
-
数组名.pop()
-
unshift()方法
-
向数组开头添加一个或多个元素,其他元素会依次向后调整
-
返回新的数组长度
-
数组名.unshift(值1, 值2, 值3, ...)
-
shift()方法
-
该方法可以删除数组的第一个元素
-
返回被删除的元素
-
数组名.shift()
-
数组的遍历
-
循环使下标访问元素
-
// 示范
for(var i = 0; i < arr.length; i++){
console.log(arr[i]);
}
-
forEach方法
-
需要一个函数作为参数
-
像这种函数,由我们创建但不由我们调用的函数,称之为回调函数
-
数组中有几个元素,函数就会执行几次。每次执行,浏览器会将遍历到的元素以实参的形式传递进来,我们可以定义形参来读取这些内容
-
-
浏览器会在回调函数中传递三个参数:
-
第一个参数,是当前正在遍历的元素
-
第二个参数,是当前正在遍历的元素的索引
-
第三个参数,是当前正在遍历的数组
-
-
数组名.forEach(function(value, index, obj){
操作语句......
});
-
slice()方法
-
可以用来才数组中提取出指定元素
-
参数:
-
参数1:截取开始位置的索引(含)
-
参数2:截取结束位置的索引(不含)
-
参数2省略时,默认截取到末尾
-
-
-
参数可以传递一个赋值,表示从后往前计算(从-1起)
-
// 示范
var result = arr.slice(1, 2);
-
splice()方法(常用)
-
可以用来删除数组中指定的元素
-
使用该方法会影响到原数组,会将指定元素从原数组中删除
-
返回被删除元素
-
参数:
-
参数1:表示开始位置的索引(含)
-
参数2:表示删除的数量
-
参数3至参数n:可以传递一些新的元素,这些元素将会自动插入到开始位置索引的前边
-
-
注意:
-
当删除数量为0时,相当于插入元素
-
参数3及之后的参数可省略
-
-
-
concat()方法
-
可以连接两个或者多个数组,元素也可以拼接
-
返回新数组
-
该方法不会对原数组造成影响
-
// 例子
var result1 = arr1.concat(arr2)
var result2 = arr1.concat(arr2, arr3, 元素1, ...)
arr = [5, 4, 2, 1, 3, 6, 8, 7];
arr.sort(function(a, b){
if(a>b){
return 1;
}else if(a<b){
return -1;
}else{
return 0;
}
})
console.log(arr) //1,2,3,4,5,6,7,8
// 上面代码简写
arr.sort(function(a, b){
// 升序
return a - b
// // 降序
// return b -a
})
-
join()方法
-
该方法可以将数组转换为一个字符串,默认是以逗号来连接元素
-
返回转换成的字符串
-
该方法不会对原数组产生影响
-
参数:
-
可以指定一个字符串作为参数,这个字符串是元素之间的连接符
-
不指定该参数,则默认以逗号来连接
-
-
-
reverse()方法
-
将数组反转
-
会对原数组造成影响,直接在原数组上操作
-
-
sort()方法
-
可以用来对数组中的元素进行排序
-
默认以Unicode编码进行排序,即使是纯数字也是如此
-
会影响原数组
-
参数:
-
添加一个回调函数来指定排序的方式
-
回调函数有两个形参
-
浏览器会自动把数组中的两个元素作为两个实参传入回调函数
-
不能确定是哪两个元素,但可以确定在数组中a一定在b前边
-
-
浏览器会根据回调函数的返回值来决定元素的顺序
-
如果返回一个大于0的值,则元素会交换位置
-
如果返回一个等于0的值,则认为两元素相等,且不交换位置
-
如果返回一个小于0的值,则元素的位置不变
-
-
简而言之:
-
需要升序,返回a-b
-
需要降序,返回b-a
-
-
-
-