数组的概念

数组仍属于object对象
数组同普通对象类似,也是来存储一些值的,不同的是普通对象是使用字符串作为属性名,而数组使用数字作为索引操作元素。
从0开始的整数就是索引
数组的性能优于普通对象,所以开发中存数据常用数组

  1. var arr = new Array();
  2. arr[0] = ...;
  3. arr[1] = ...;
  4. 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(); 删除第一个元素并返回删除值

数组的遍历

普通遍历

  1. var arr = [1,2,3,4,5];
  2. for(var a = 0 ; a < arr.length ; a++){
  3. console.log(arr[a]);
  4. } //依次打印所有数组元素

forEach()遍历

forEach():

  1. - 数组中有几个元素就会执行几次
  2. - 每次执行时浏览器会将遍历到的元素以实参的形式传递进来,我们可以通过定义实参来读取这些内容
  3. - 回调函数传递三个参数:
  4. 1. 数组当前项的值
  5. 1. 数组当前项的索引
  6. 1. 数组对象本身
  1. var arr = [1, 2, 3, 4];
  2. var sum = 0;
  3. arr.forEach(function (a, b, c) {
  4. console.log(a, b, c);
  5. }); //输出四次,分别为各项的值、索引以及数组本身

数组的方法补充

slice():从数组中提取指定元素

  1. var arr = [1,2,3,4,5];
  2. arr.slice(2,4); //返回值为 [3,4]
  1. 1. slice(a,b): a:开始位置索引;b:结束位置索引 (包前不包后)
  2. 1. slice(a) a开始往后全截取
  3. 1. slice(a,-b) 左删a个右删b

该方法不改变原数组

splice():删除数组中指定元素,并添加新元素

  1. var arr = [1,2,3,4,5];
  2. arr.splice(1,2); //[1,4,5]
  3. arr.splice(1,2,9); //[1,9,4,5]
  4. arr.splice(1,0,9,8); //[1,9,8,2,3,4,5]
  1. splice(a,b,c,d......):<br />从a开始删b个,吧c以后的全部加到a前的位置上<br />该方法改变原数组

concat():链接两个或多个数组,并作为返回值返回

  1. var arr1 = [1,3,5];
  2. var arr2 = [2,4,6];
  3. arr = arr1.concat(arr2); //[1,3,5,2,4,6]
  4. arr0 = arr1.concat(arr2,arr) //[1,3,5,2,4,6,1,3,5,2,4,6]
  5. arr00 = arr1.concat(arr2,8,9) //[1,3,5,2,4,6,8,9]

该方法不改变原数组

join():将数组转换为一个字符串

join可指定一个字符作为元素间的链接符

  1. var arr = [1,2,3,4,5];
  2. arr.join(); //a,b,c
  3. arr.join("-"); //a-b-c
  4. arr.join(""); //abc

该方法不改变原数组

reverse():颠倒数组中元素的顺序

  1. var arr = [1,2,3];
  2. arr.reverse();
  3. console.log(arr); //[3,2,1]

该方法改变原数组

sort():对数组元素进行排序,默认按Unicode排序

  1. var arr = ["c","a","b","e","d"];
  2. 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

  1. var arr1 = [1,6,4,3,2,5,10];
  2. var arr2 = [1,6,4,3,2,5,10];
  3. arr1.sort(function(a,b){
  4. return a-b; //[1,2,3,4,5,6,10]
  5. })
  6. arr2.sort(function(a,b){
  7. return b-a; //[10,6,5,4,3,2,1]
  8. })

该方法改变原数组