数组Array
1.数组也是对象的一种(内建对象),主要用来存储一些数据。
2.普通对象是通过字符串作为属性名,而数组是使用数字作为索引来操作元素。
3. 数组中的元素可以使任意的数据类型,包括对象和函数。
4. 使用typeof检查数组的数据类型,结果返回object。
- 创建数组对象
方式 | 语法 |
使用构造函数 | var 数组名=new Array(值1,值2…值n); |
使用字面量 | var 数组名=[值1,值2…值n]; |
- 操作数组对象
读取:数组[索引]
添加:数组[索引]=值;
索引是从0开始的整数
- 操作数组长度
读取:数组.length
修改:数组.length=xx;
使用length属性来获取数组的长度(元素的个数),等于数据的最大索引值+1
tips:向数组的最后一个位置添加元素的方法: 数组[数组.length]=值;
修改的length多于原长度,则多余的为空值;少于的话,则会将多余的值删除掉
数组Array的方法
以下介绍数组中常用的方法:
方法 | 语法 | 作用 | 返回值 |
filter() | 数组.filter() | 过滤数组,传递一个回调函数 | 满足回调函数的值组成的新的数组,原数组不变 |
some() | 数组.some() | 判断数组,传递一个回调函数;有一项满足则整体返回true | true/false,原数组不变 |
every() | 数组.every() | 判断数组,传递一个回调函数;有一项不满足则整体返回false | true/false,原数组不变 |
indexOf() | 数组.indexOf(value,formIndex) | 查找数组项,可指定第二个参数指定开始查找的索引位置 | 第一次出现时的索引或-1(未找到),原数组不变 |
lastIndexOf() | 数组.lastIndexOf(value,fromIndex) | 与indexOf()类似,只是从后往前找 | 第一次出现时的索引或-1(未找到),原数组不变;原数组不变 |
push() | 数组.push(元素1,…) | 向数组的末尾添加一个或多个元素 | 数组的新的长度,原数组改变 |
pop() | 数组.pop() | 删除数组的最后一个元素 | 被删除的元素,原数组改变 |
unshift() | 数组.unshift(元素1,…) | 向数组的开头添加一个或多个元素 | 数组的新的长度,原数组改变 |
shift() | 数组.shift(元素1,…) | 删除数组的第一个元素 | 被删除的元素,原数组改变 |
slice() | 数组.slice(索引1,索引2) | 从数组中返回指定的元素 索引1(包括)索引2(不包括) | 截取到的元素封装到新的数组中返回,原数组不改变 |
splice() | 数组.splice(索引1,数量,元素1,…) | 删除数组中指定的元素 索引1(包括),并在开始位置索引前插入一些新的元素(可不添加) | 被删除的元素封装到新的数组中返回,原数组改变 |
concat() | 数组.concat(数组1,数组2,…) | 连接两个或多个数组 | 新的数组,原数组不改变 |
join() | 数组.join(字符串) | 将数组转换为字符串;括号中的字符串为连接符,默认为逗号 | 转换后的字符串,原数组不改变 |
reverse() | 数组.reverse() | 反转数组 | 新的数组,原数组改变 |
sort() | 数组.sort() | 对数组中的元素进行排序, 默认按照unicode编码 | 新的数组,原数组改变 |
补充:
数组Array的遍历
遍历数组,即将数组中所有的元素取出。
- 使用for循环
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
- 使用forEach()方法
需要一个函数作为参数;函数由我们创建但不是由我们调用,称为回调函数。
数组中有几个元素函数就会执行几次,每次执行时,浏览器会将遍历到的元素以实参的形式传入。
*浏览器在回调函数中会传递三个参数:
第一个参数,就是当前正在遍历的元素value
第二个参数,就是当前正在遍历的元素的索引index
第三个参数,就是正在遍历的数组
可以只传递1个或2个参数,但是会按顺序传递。
var arr=[2,'hr',3];
arr.forEach(function(value,index){
console.log(index);
console.log(value);
})
- 使用map()方法
需要一个回调函数作为参数,返回回调返回值组成的新数组。
回调函数中的参数与forEach()相同
var obj=[1,2,3,4]
var =obj.map(function(item){
return item*item;
});
console.log(arr); //[1,4,9,16]