3:Array构造函数
知识梳理
//1 判断数组 instanceof Array.isArray(arr); //2 添加元素 .unshift() .push() //3 删除元素 .shift() .pop() //4 查找索引 arr.indexOf() arr.lastIndexOf() //5 数组排序 sort //6 数组转字符串 arr.toString() arr.join('|')
一 基本属性
1)参数说明
var arr = new Array(2);//创建了一个长度为2的空数组
var arr = new Array('2');//创建了一个元素为字符串2的数组
var arr = new Array(2,3);//创建了包含2个元素的数组
2)异常
当size为负数 或者大于最大值时 会抛出RangeError异常
var arr = new Array(2); //Uncaught RangeError: Invalid array length
未捕获 范围错误 无效 数组 长度
3)直接量语法
var arr = [];
4)属性
//只有一个length属性
二 常用方法
1)判断数组
方法一 instanceof 运算符检测 var arr = new Array(); //创建一个空数组 console.log(arr instanceof Array ); //返回布尔值
方法二
Array.isArray(arr_name);
2)添加元素
var arr = [1,2,3,4]; var res1 = arr.unshift(0,'李白');//向数组开头压入一个或多个元素 var res2 = arr.push(5,'杜甫');//向数组尾部压入一个或多个元素 console.log(res1);//返回值:返回新数组的长度 console.log(res2);//返回值:返回新数组的长度 console.log(arr);// [0, "李白", 1, 2, 3, 4, 5, "杜甫"]
3)删除元素
var arr = [1,2,3,4]; var res = arr.pop();//1 删除数组末尾的最后一个元素 var res1 = arr.shift();//2 删除数组开头的第一个元素 console.log(res);//4 返回值:被删除的元素 console.log(res1);//1 返回值:被删除的元素 console.log(arr);//[2,3]
4)查找元素的索引号
//1 indexOf() 从前往后查找 var arr = ['李白','杜甫','白居易','白居易']; console.log(arr.indexOf('白居易')); //返回 2 如果存在 返回索引号 console.log(arr.indexOf('李商隐')); //返回-1 如果不存在 返回-1 //2 lastIndexOf() 从后往前查找 console.log(arr.lastIndexOf('白居易'));//如果存在 返回索引号 console.log(arr.lastIndexOf('李商隐'));//如果不存在 返回-1
5)数组翻转
var arr = [1,2,3]; arr.reverse(); console.log(arr); //[3, 2, 1]
6)数组排序 sort()
//冒泡排序 var arr1 = [10,9,22,34,35,45,41]; //arr1.sort();//做冒泡有一些问题 它是基于 UTF-16代码 //做一些改进 实现冒泡算法 [ 里面的函数写法是固定的 ] arr1.sort(function (a,b) { return b - a;//[a-b是从小到大] [b-a从大大小] }) console.log(arr1);
7)将数组装换为字符串
//方法1 toString() //方法2 join('分隔符号') var arr = [1,2,3]; console.log(arr.toString());//转换为字符串 console.log(arr.join('|'));//可以用其他符号分割,默认是逗号
三 练习案例
1)把工资大于2000的删除
var arr = [1500,2200,3200,1400]; var newArr = []; for (var i = 0;i < arr.length; i++) { if (arr[i] < 2000) { newArr.push(arr[i]); } } console.log(arr); console.log(newArr);
//用到的知识点:添加数组元素
2)数组去重 [ 重点案例 ]
//目标:把旧数组中不重复的元素选出来,重复的只保留一个 存放到新数组中
//核心思路:我们遍历旧数组,拿旧数组的元素值去新数组中匹配 如果不存在就push到新数组中
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i])
}
}
return newArr;
}
var res = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']);
console.log(res);
3)求某个值出现的次数和位置 [ 重点案例 ]
//举一反三 求数组中 red 出现的位置和次数 var arr = ['red','blue','green','pink','red']; var index = arr.indexOf('red'); var num = 0; while (index !== -1) { console.log(index); num++; index = arr.indexOf('red',index + 1); } console.log('red出现了:' + num + '次');