Javascript引用类型-Array
创建Array数组
var colors = new Array(); //注意大小写
var colors = new Array(20); //创建长度20的数组
var colors = new Array("red","blue","green");//创建包含3个字符串的数组
var colors = new Array('3'); //包含要给字符的数组(注意和第二项的区别)
var colors = ["red","blue","3"];
var colors = []; //空数组
//最好不要这样创建
var colors = [1,2,]; //2或3项的数组(根据浏览器决定)
var colros = [,,,,,] //5或6项的数组
检测是否为数组
//方法一
if(value instanceof Array){}
//方法二
Array.isArray(value);
两者区别
方法一在多个不同的全局执行环境中会出问题。
数组转换方法
var colors = ["red","blue","green"];
alert(colors.toString()); //输出:red,blue,green
alert(colors.valueOf()); //输出:red,blue,green
alert(colors); //输出:red,blue,green
栈方法
- 栈特点:LIFO(先进后出)
- 入栈:push()
- 出栈:pop()
var colors = new Array();
var count = colors.push("red","blue");
alert(count); //2
var item = colors.pop();
alert(item); //blue
alert(colors.length) //1
队方法
- 队特点:FIFO(先进先出)
- 入队:unshift()
- 出队:shift()
var colors = new Array("red","blue","green");
var item = colors.shift();
alert(item); //red
alert(colors.length); //2
重排序方法
- reverse()反转数组
- sort(function)排序数组,如果不给function参数,则会调用默认的toString()方法,然后根据ASCLL比较大小
function compare(value1,value2){
if(value1 > value2){
return -1; //负数表示第一个参数位于第二参数之前
}else if(value1 < value2){
return 1; //负数表示第一个参数位于第二参数之后
}else{
return 0; //相等就用0表示
}
}
var values = [1,2,3,4];
values.sort(compare);
alert(values); //4,3,2,1
操作方法
深度复制一个数组(创建数组的副本)
var colors = new Array("red","blue","green");
var colors2 = colors.concat("yellow",["1","2"]);
alert(colors); //red,blue,green
alert(colors2);//red,blue,green,yellow,1,2
slice()截取数组
var colors = ["red","blue","green","yellow","purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //blue,green,yellow,purple
alert(colors3); //blue,green,yellow"
splice()增删查改数组
- 删除
splice(0,2) 删除数组前两项 - 插入
splice(2,0,”red”,”green”) 从当前数组的位置2开始插入字符串 - 替换
splice(2,1,”red”,”green”) 删除位置2的项,然后开始插入字符串
位置方法
- indexOf()
- lastIndexOf();
迭代方法
every()方法和some()方法
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
return (item > 2);
}); //是否全部大于2,是就放回true,否则false
alert(everyResult) //false
var someResult = numbers.some(function(item,index,array){
return (item > 2);
}); //是存在大于2的数,是就放回true,否则false
alert(someResult) //true
filter()方法
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
return (item > 2);
}); //大于2,就放回item
alert(filterResult) //[3,4,5,4,3]
map()方法
var numbers = [1,2,3,4];
var mapResult = numbers.map(function(item,index,array){
return (item * 2);
}); //每一项都放回item*2
alert(mapResult) //[2,4,6,8]
forEach()方法
var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item,index,array){
//执行某些操作
})
归并方法
reduce()从第一项开始
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
return prev+cur;
});
alert(sum); //15
- 说明:
prev 表示前一个值(也就是上次执行的返回值prev+cur)
cur 表示当前值(可选,也就是该索引下数组的值)
index 项的索引
array 数组对象
reduceRight()从最后一项开始
//代码略