JS 数组
以索引为键的对象,性能高于对象
创建
- new Array()
var arr = Array()
for(var i = 0;i<5;i++){
arr[i] = i;
};
var arr = Array(1,2,3,4,5,6)
- 数组字面量
var arr = [2,3,4,5,6,7,8];
不同:传入一个整数时,new把这个数当作数组长度,字面量当作一个元素
常用方法
- length:返回长度,也可以修改长度
var arr = [2,3,4,5,6,7,8];
console.log(arr.length)
// 修改长度,大于本来的长度,添加空的元素
arr.length = 10;
console.log(arr);
// 修改长度,小于本来的长度,删除多的元素
arr.length = 3;
console.log(arr);
- pop():删除并返回最后一个元素
- push():在最后添加一个元素并返回
- unshift():在开头添加并返回一个元素
- shift():删除并返回第一个元素
- slice(start,end):类似切片,异地操作
- splice(start,num,···):原地操作,删除并向数组中添加元素,参数:开始删除的位置和删除的数量,插入的新元素
- concat():异地操作,拼接多个数组并返回
- join():异地,将数组转换为字符串
- reverse():反转数组
- sort():排序
自定义排序规则
默认按照unicode编码顺序排序,这样对数字排序会出错
返回大于0的值交换位置,否则保持
arr.sort(function(a,b){
// 方法1
// if(a>b){
// return -1;
// }else if(a == b){
// return 0;
// }else{
// return 1;
// }
//方法2
return b-a;
});
console.log(arr);
遍历数组
- for循环
- 使用forEach()方法,有的浏览器不支持,需要一个函数做参数(匿名函数),数组中有几个元素,函数就会执行几次,每次循环数组中的元素都会以实参的形式传给函数(会同时传三个,第一个是值(value),第二个是索引(index),第三个是正在遍历的数组(object))
- JS访问越界的数组不会报错,会输出underfind