数组的概念
数组仍属于object对象
数组同普通对象类似,也是来存储一些值的,不同的是普通对象是使用字符串作为属性名,而数组使用数字作为索引操作元素。
从0开始的整数就是索引
数组的性能优于普通对象,所以开发中存数据常用数组
var arr = new Array();
arr[0] = ...;
arr[1] = ...;
console.log(arr[0]);
用length可获取数组长度arr.length
(仅适用于连续数组)
非连续数组使用此方法,返回值则为最大索引加1
用length可以修改数组长度。arr.length = 10;
//数组长度小于10则空,大于10则截,即删除多的元素arr[arr.length] = ...;
//此方法可以永远向数组的最后一个位置添加元素
数组的基本使用
创建数组
var arr = [1,2,3,4,5];
此方法创建数组更方便,一般使用此方法var arr = new Array(1,2,3,4,5);
同上功能相同,但一般不用var arr = new Array(10)
“()”里只有一个数值,表示数组长度为10
数组中可加任意数据类型var arr = [[1,2,3],[4,5,6],[7,8,9]];
创建一个二维数组
数组的增删
arr.push("1","2");
在数组尾添加一个或多个元素,并返回数组的新长度arr.pop();
删除数组最后一个元素,并返回被删元素值arr.unshift("0");
向数组首加一个或多个元素,并返回数组新长度arr.shift();
删除第一个元素并返回删除值
数组的遍历
普通遍历
var arr = [1,2,3,4,5];
for(var a = 0 ; a < arr.length ; a++){
console.log(arr[a]);
} //依次打印所有数组元素
forEach()遍历
forEach():
- 数组中有几个元素就会执行几次
- 每次执行时浏览器会将遍历到的元素以实参的形式传递进来,我们可以通过定义实参来读取这些内容
- 回调函数传递三个参数:
1. 数组当前项的值
1. 数组当前项的索引
1. 数组对象本身
var arr = [1, 2, 3, 4];
var sum = 0;
arr.forEach(function (a, b, c) {
console.log(a, b, c);
}); //输出四次,分别为各项的值、索引以及数组本身
数组的方法补充
slice():从数组中提取指定元素
var arr = [1,2,3,4,5];
arr.slice(2,4); //返回值为 [3,4]
1. slice(a,b): a:开始位置索引;b:结束位置索引 (包前不包后)
1. slice(a) 从a开始往后全截取
1. slice(a,-b) 左删a个右删b个
该方法不改变原数组
splice():删除数组中指定元素,并添加新元素
var arr = [1,2,3,4,5];
arr.splice(1,2); //[1,4,5]
arr.splice(1,2,9); //[1,9,4,5]
arr.splice(1,0,9,8); //[1,9,8,2,3,4,5]
splice(a,b,c,d......):<br />从a开始删b个,吧c以后的全部加到a前的位置上<br />该方法改变原数组
concat():链接两个或多个数组,并作为返回值返回
var arr1 = [1,3,5];
var arr2 = [2,4,6];
arr = arr1.concat(arr2); //[1,3,5,2,4,6]
arr0 = arr1.concat(arr2,arr) //[1,3,5,2,4,6,1,3,5,2,4,6]
arr00 = arr1.concat(arr2,8,9) //[1,3,5,2,4,6,8,9]
join():将数组转换为一个字符串
join可指定一个字符作为元素间的链接符
var arr = [1,2,3,4,5];
arr.join(); //a,b,c
arr.join("-"); //a-b-c
arr.join(""); //abc
该方法不改变原数组
reverse():颠倒数组中元素的顺序
var arr = [1,2,3];
arr.reverse();
console.log(arr); //[3,2,1]
该方法改变原数组
sort():对数组元素进行排序,默认按Unicode排序
var arr = ["c","a","b","e","d"];
arr.sort(); //["a","b","c","d","e"]
此方法对数字排序,会按照首字符大小进行排序,比如有8>11的情况
即对数字进行排序时,要加一个回调函数来制定排序规则sort(function(a,b){})
回调函数需要a,b两个形参
浏览器会分别使用数组中元素作为实参去回调函数
不确定使用那个元素,但可确定a在b之前
浏览器会根据回调函数的返回值决定元素的顺序
return一个大于0的值,元素交换位置
return一个等于0的值,两数相等,位置不变
return一个小于0的值,元素位置不变
即根据这一特性,需要升序则return a-b;需要降序则return b-a
var arr1 = [1,6,4,3,2,5,10];
var arr2 = [1,6,4,3,2,5,10];
arr1.sort(function(a,b){
return a-b; //[1,2,3,4,5,6,10]
})
arr2.sort(function(a,b){
return b-a; //[10,6,5,4,3,2,1]
})
该方法改变原数组