1.Array声明
1)var arr = new Array(3)
var arr = new Array("aa","bb","cc")
var arr = Array("aa","bb","cc")//new 可以省略
2)var arr = ["a","b","c"]
var arr = []
3)数组长度的扩展
1.arr[4] = "dd" //数组长度会自动加1
2.arr.length = 5 //数组长度会自动增加到5 创建undefined的变量进行填充
3.arr.length = 2 //数组长度变成2 arr[2]=undefined
2.数组元素的输出
toString()/valueOf()/join() join可以指定分隔符
var colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
alert(colors.toString()); // red,blue,green
alert(colors.valueOf()); // red,blue,green
alert(colors); // red,blue,green
alert(colors.join(",")); //red,green,blue
alert(colors.join("||")); //red||green||blue
3.栈与队列方法
1)栈 push()/pop()
push方法可以有多个参数 不过pop每次只会输出1个元素
eg:var colors = {};
colors.push("red","green");
2)队列 shift()/push() shfit取出数组的第一个元素
var colors = new Array();
colors.push("red", "green");
colors.shift()
3)unshift() 向数组前部插入n个元素
var colors = new Array();
colors.unshift("red","blue");
4.数组排序
1)reverse() 将数组逆序排列
2)sort() 默认按照字符顺序排列数组
可以接受一个比较函数进行定制排序
var arr = [1,5,8,15];//1,15,5,8
alert(arr.sort());
arr = [1,5,8,15];
alert(arr.sort(compare));
function compare(a,b){
if(a>b){
return 1;
}else if(b>a){
return -1;
}else{
return 0;
}
};//1,5,8,15
5.数组增删改
1)concat 创建一个合并后的新数组
var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow", ["black", "brown"]);
alert(colors); //red,green,blue
alert(colors2); //red,green,blue,yellow,black,brown
2)slice 截取一个新数组 两个参数 起始位置 终了位置 终了位置可省略
截取范围为 起始位置~终了位置-1
var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow
3)splice增删改
2+1个参数: 1:要删除的元素的起始位置 2:要删除的元素个数 3~:要插入的元素
返回值:删除的元素的数组 如没有删除元素 返回空数组
splice(0,2)会删除数组中的前两项
splice(2,0,"red","green")会从当前数组的位置 2 开始插入字符串"red"和"green"
splice (2,1,"red")会替换位置 2的值
6.查找元素位置
indexOf()/lastIndexOf() 找不到返回-1
eg:var arr = ["aa","bb","cc","dd","ee"];
alert(arr.indexOf("dd"));//3
7.迭代方法
every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。
some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。
map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
eg1:
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array){
return (item > 2);
});
alert(everyResult); //false
var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
alert(someResult); //true
eg2:
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array){
return (item > 2);
});
alert(filterResult); //[3,4,5,4,3]
eg3:
var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array){
return item * 2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2]
eg4:
var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array){
//执行某些操作
});
8.归并方法
reduce()和 reduceRight()
传给 reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15