1,创建数组
1 //第一种是使用Array构造函数 2 var colors = new Array(); 3 var colors = new Array(20); //创建length为20的数组 4 var colors = new Array("red","blue","green"); 5 //第二种基本方式是使用数组字面量表示法 6 var colors = ["red","blue","green"];
2,获取数组长度
1 var colors = ["red","blue","green"]; 2 console.log(colors.length); //3
3,检测数组
1 var colors = ["red","blue","green"]; 2 var isArray = Array.isArray(colors); 3 console.log(isArray); //ture
4,转换方法
1 var colors = ["red","blue","green"]; 2 console.log( colors ); //red,blue,green 3 console.log( colors.toString ); //red,blue,green 4 console.log( colors.valueOf() ); //red,blue,green 5 console.log( colors.join("&") ); //red&blue&green
toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。
valueOf()方法返回的还是数组
join()方法只接受一个参数,即作为分隔符的字符串,然后返回包含所有数组项的字符串。如果不给join()传入任何值,或者给他传入undefined,则使用逗号作为分隔符,IE7及更早的版本会错误的使用字符串undefined作为分隔符。
5,栈方法
1 var colors = ["red","blue","green"]; 2 colors.push("black"); 3 alert( colors ); // red,blue,green,black 4 var item = colors.pop(); 5 alert( item ); //black 6 alert( colors.length ); //3
6,队列方法
1 var colors = ["red","blue","green"]; 2 var item = colors.shift(); //取地第一项 3 alert( item ); //red 4 alert( colors ); //blue,green 5 6 var count = colors.unshift(“red”,"black"); //推入两项 7 alert( colors ); //red,black,blue,green 8 9 var item = colors.pop(); //取得最后一项 10 alert( item ); //green 11 alert( colors ); //red,black,blue
7,重排序方法
1 var values = [0,1,5,10,15]; 2 values.reverse(); //反转数组项的顺序 3 alert(values); //15,10,5,1,0 4 5 values.sort(); 6 //sort()方法会调用每个数组项的 toString() 转型方法,然后比较得到的字符串 7 alert(values); //0,1,10,15,5 8 9 //降序排序 10 function compare(value1,value2){ 11 if(value1 < value2){ 12 return 1; 13 } else if (value1 > value2){ 14 return -1; 15 }else{ 16 return 0; 17 } 18 } 19 var values = [0, 1, 5, 10, 15]; 20 values.sort(compare); 21 alert(values); //15,10,5,1,0 22 23 //更简单的比较函数 24 function compare(values1, values2){ 25 return value1 - value2; 26 }
8,操作方法
1 var colors = ["red","blue","green"]; 2 var colors2 = colors.concat("yellow", ["black", "brown"]); 3 alert( colors2 ); //red,blue,green,yellow,black
1 var colors = ["red","blue","green","yellow","black"]; 2 var colors2 = colors.slice(1); 3 var colors3 = colors.slice(1, 4); 4 alert(colors2); //blue,green,yellow,black 5 alert(colors3); //blue,green,yellow 6 7 8 var colors4 = colors.slice(-2, -1); 9 var colors5 = colors.slice(3, 4); 10 alert(colors4); //yellow 11 alert(colors5); //yellow
splice方法主要用途是向数组的中部插入项,但是这种方法的方式有以下三种:
1,删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数。
例如:splice(0,2)会删除数组中的前两项。
2,插入:可以向指定的位置插入任意数量的项,只需提供3个参数:起始位置、0(要删除的项)和要插入的项。如果要插入多项,可以再传入第四、第五,以及任意多个项。
例如:splice(2,0,"red","green")会从当前数组的位置2开始插入字符串“red”,“green”。
3,替换:可以向指定的位置插入任意的数量的项,且同时删除任意数量的项,只需指定三个参数:起始位置,要删除的参数和要插入的任意数量的项。插入的项数不必和与删除的项数相等。
例如:splice(2,1,"red","green")会删除当前数组位置2的项,然后再从位置2开始插入字符串“red”,“green”。
9,位置方法
1 var numbers = [1,2,3,4,5,4,3,2,1]; 2 alert(number.indexOf(4)); //3 3 alert(number.lastIndexOf(4)); //5 4 5 alert(number.indexOf(4, 4)); //5 6 alert(number.lastIndexOf(4, 4)); //3
//没有找到的情况下返回 -1
10,迭代方法
every(): 对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回 true;
filter(): 对数组中的每一项运行给定的函数,返回该函数会返回true的项的组成的数组。
forEach(): 对数组中的每一项运行给定的函数,这个方法没有返回值。
map(): 对数组中的每一项运行给定的函数,返回该函数调用结果的组成的数组。
some(): 对数组中的每一项运行给定的函数, 如果该函数对任一项返回true,则返回true。
1 var number = [1, 2, 3, 4, 5, 4, 3, 2, 1]; 2 3 var everyResult = numbers.every(function(item, index, array){ 4 return(item > 2); 5 }) 6 alert(everyResult); //false 7 8 var someResult = numbers.some(function(item, index, array){ 9 return(item > 2); 10 }) 11 alert(someResult); //true 12 13 var filterResult = numbers.filter(function(item, index, array){ 14 return(item > 2); 15 }) 16 alert(filterResult); //[3, 4, 5, 4, 3] 17 18 var mapResult = numbers.map(function(item, index, array){ 19 return item * 2 ; 20 }) 21 alert(mapResult); //[2, 4, 6, 8, 10, 8, 6, 4, 2] 22 23 var i = 0; 24 numbers.forEach(function(item, index, array){ 25 i++; 26 }) 27 alert(i); //9
11,归并方法
1 var values = [1, 2, 3, 4, 5] 2 var sum = values.reduce(function(prev, cur, index, array){ 3 return prev + cur; 4 }); 5 alert(sum) //15
//第一次执行回调函数,prev是1,cur是2。第二次,prev是3(1加2的结果),cur是3(数组的第三项)。
6 7 var sum = values.reduceRight(function(prev, cur, index, array){ 8 return prev + cur; 9 }); 10 alert(sum) //15
//第一次执行回调函数,prev是5,cur是4。第二次,prev是9(5加4的结果),cur是3(数组的倒数第三项)。
这两个方法都会迭代数组的所有的项,然后构建一个最终返回的值。reduce()是从数组第一项开始,逐个遍历到最后。而reduceRight()则从数组的最后一项,向前遍历到第一项。
接收4个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。
from:《Javascript 高级程序设计》笔记总结