第四部分:数组对象
(一)数组创建的两种方式
-
通过字面量创建
var arr=[1,2,3];
-
new Array
var arr=new Array(); //构造函数创建 var arr1=new Array(2); //创建一个长度为2的空数组 var arr2=new Array(1,2,3) //如果不止放了一个元素,则表示里面存放了元素
(二)检测变量是否为数组
有两种方法:
-
instanceof运算符,可以检测是否为数组
var arr=[]; var obj={}; console.log(arr instanceof Array); console.log(obj instanceof Array);
-
Array.isArray方法
var arr=[]; var obj={}; console.log(Array.isArray(arr)); //将要判断类型的变量作为参数传进去 console.log(Array.isArray(obj));
H5新增的,过低的浏览器版本不支持本方法.
(三)增删数组元素
有4个方法添加或删除元素:
-
push(num1,num2...): 在原数组末尾添加1各或多个元素,修改的是原数组. 返回值为新的数组长度
目的:给数组追加新的元素.
var arr=[1,2,3]; arr.push(4,5,6); console.log(arr); //输出为[1,2,3,4,5,6]
-
pop(): 删除数组最后一个元素,并把数组长度-1,无参数,修改的是原数组. 返回值为它删除的元素的值
var arr=[1,2,3]; arr.pop(); console.log(arr); //输出为[1,2]
-
unshift(num1,num2,...): 向数组的开头添加1个或多个元素,修改的是原数组. 返回值为新的数组长度.
var arr=[1,2,3]; arr.unshift(4,5,6); console.log(arr); //输出为[4,5,6,1,2,3]
-
shift(): 删除数组的第一个元素,数组长度-1,无参数,修改的是原数组的值. 返回值为第一个元素的值
var arr=[1,2,3]; arr.shift(); console.log(arr); //输出为[2,3]
案例:筛选数组
有一个数组[1500,1200,2000,2100,1800],要求将数组中工资超过2000的删除,剩余的放到新数组里面.
var arr=[1500,1200,2000,2100,1800]; function delete(arr){ var newArr=[]; for(var i=0;i<arr.length;i++){ if(arr[i]<2000) newArr.push(arr[i]); } return newArr; } console.log(delete(arr));
(四)数组排序
两种方法:
-
reserve(): 颠倒数组中元素的顺序,无参数.会改变原来的数组,返回新数组
var arr=[1,2,3,4,5]; arr.reverse(); console.log(arr);
-
sort(): 对数组元素进行排序. 会改变原来的数组,返回新数组.
var arr=[3,4,5,2,8,1,4,2]; arr.sort(); console.log(arr);
如果是1位数,可以正常排序.如果是多位数,会先排第一位,再排第二位,如:
var arr=[13,4,7,77,1]; arr.sort(); console.log(arr);
排序结果为:[1,13,4,7,77]
如果想要正常的排序结果,有一种固定写法:
var arr=[13,4,7,77,1]; arr.sort(function(a,b){ return a-b; }); console.log(arr);
没什么含义,固定写法,这么写就能实现真正的冒泡.
现在是升序排序,如果是b-a,就是降序排序
(五)获取数组元素索引
数组索引方法:
-
indexOf():在数组中查找给定元素的第一个索引,如果找到,返回索引号,如果没找到,返回-1
arr=[1,2,3,4,5]; console.log(arr.indexOf(2));
-
lastIndexOf():在数组中查找给定元素最后一次出现的索引,如果找到,返回索引号;如果没找到,返回-1.
arr=[1,2,3,4,5]; console.log(arr.lastIndexOf(2));
案例:有一个数组['c','a','z','a','x','a','x','c','b'],要求去掉其中重复的元素.
核心思想:遍历旧数组,用旧数组的元素查找新数组,如果新数组里有,就不添加,如果没有就加进去.
var arr=['c','a','z','a','x','a','x','c','b']; var newArr=[]; for(var i=0;i<arr.length;i++){ var x=arr[i]; if(newArr.indexOf(x)==-1) newArr[newArr.length]=x; } console.log(newArr);
(六)数组转字符串
两个方法:
-
toString():把数组转换成字符串,逗号分隔每一项. 返回值为一个字符串
var arr=[1,2,3]; console.log(arr.toString());
-
join('分隔符'):把数组中的所有元素转换成字符串,中间添加自己所写的分隔符. 返回值为一个字符串
var arr[1,2,3]; console.log(arr.join('.')); //输出:1.2.3
另:字符串常用方法