您的位置:首页 > Web前端 > JavaScript

一张表说明javascript 数组的几个重要方法

2016-08-15 16:48 465 查看
方法名
功能示例
栈方法和队列方法

push()
1、和pop() 方法一块可以实现让数组像栈一样“后进先出”;
2、和shift()方法一块可以实现让数组像队列一样“先进先出”;
3、push()方法可以接受任意数量的参数,把它们逐个添加到数组的末尾,同时增加数组的
length值。
var colors = ["red","green"];
colors.push("blue",["yellow","pink"]);
alert(colors); //red,green,blue,yellow,pink
pop()

pop()方法从数组的末尾移出最后一项,同时返回该项,并且数组的length 减一。
var colors = ["red","green","blue"];
var item = colors.pop();
alert(item);//blue
alert(colors.length);//2
shift()
shift()方法删除数组的第一项同时放回该项,并且数组的length 减一。
var colors = ["red","green","blue"];
var item = colors.shift();
alert(item);//red
alert(colors.length);//2
unshift()
1、unshift()方法从数组的头部添加任意个项,并返回新数组的长度。
2、与pop()方法结合使用,可以从相反的方向模拟队列,即从头部添加,尾部删除。
var colors = ["red"];
var count = colors.unshift("green","blue");
alert(count);//3
alert(colors);//green,blue,red


重排序方法

reverse()reverse()方法反转数组的项的顺序,即头变成尾,尾变成头。
var colors = ["red","green","blue"];
colors.reverse();
alert(colors);//blue,green,red
sort()1、sort()方法调用数组中每一项的tostring()方法,然后对得到的字符串进行比较。
2、要想实现数字从大到小或者从小到大的方式排列,sort()方法需接收一个比较函数作为参数。
1、
var arr = ["cgf","fbi","abc","a","fly"];
arr.sort();
alert(arr);//a,abc,cgf,fbi,fly
2、
function compare(value1,value2){
if(value1 > value2){
return 1;  //返回任意一个正数即可
}else if(value1 < value2){
return -1;//返回一个负数即可
}else{
return 0;
}
}
/**如果想要实现从大到小的顺序排列,只需当
*value1 > value2 时,返回 一个负数,当
*value1 < value2 时,返回一个正数。**/
var arr = [15,1,35,156];
arr.sort(compare);
alert(arr);//1,15,35,156


操作方法
concat()
concat()方法基于当前数组中的所有项创建一个新数组,如果传入一个或者多个数组的话,该方法会将这些数组中的每一项添加到结果数组中。原数组不变。
var colors = ["red","green"];
var colors2 = colors.concat();
alert(colors2);//red,green
var colors = ["red","green"];
var colors2 = colors.concat("blue",["pink","black"]);
alert(colors2);//red,green,blue,pink,black


slice()
slice()方法可以接受一个和两个参数,即要返回项的起始和结束位置。当只有一个参数时,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项;如果有两个参数,该方法返回起始位置和结束位置之间的项(但不包括结束位置的项)。(索引值从0开始)原数组不变。
var colors = ["red","green","blue","pink","grey"];
var colors2 = colors.slice(2);
var colors3 = colors.slice(1,4);
alert(colors);//red,green,blue,pink,grey
alert(colors2);//blue,pink,grey
alert(colors3);//green,blue,pink
splice()1、删除
指定两个参数,要删除的第一项的位置和要删除的项数。
2、插入
可以向指定的位置插入任意数量的项,需要三个参数,起始位置、要删除的项数(此处为0)和要插入的项。如果要插入多个项,可以再传递第四个第五个以至任意多个项。
3、替换
传入3个参数,跟插入的参数一样
var colors = ["red","green","blue"];
var removed = colors.splice(0,1);//删除第一项
alert(colors);//green,blue
alert(removed);//red

//从位置1开始插入两项
removed = colors.splice(1,0,"yellow","pink");
alert(colors);//green,yellow,pink,blue
alert(removed);//返回一个空数组

//从位置1删除一项,插入两项
removed = colors.splice(1,1,"purple","black");
alert(colors);//green,purple,black,pink,blue
alert(removed);//yellow
位置方法

indexOf()

这两种方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。
其中,indexOf()方法是从数组的开头(位置0)开始向后查找,lastIndexOf()方法是从数组的末尾开始查找。
这两个方法都返回要查找的项在数组中的位置,或者在没有找到的情况下返回-1.在比较第一个参数与数组中的每一项时,会使用全等操作符,也就是说,要求查找的项必须严格相等。
var numbers = [1,2,3,4,5,6,4,5,3,2,1];
alert(numbers.indexOf(4));//3
alert(numbers.indexOf(4,5));//6

alert(numbers.lastIndexOf(4));//6
alert(numbers.lastIndexOf(4,5));//3

var person = {name: "liming"};
var people = [{name: "liming"}];
var anotherPerson = [person];
alert(people.indexOf(person));//-1
alert(anotherPerson.indexOf(person));//0


lastIndexOf()
迭代方法
every()对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true
var numbers = [1,2,3,4,6,5,4,3,2,1];
var everyResult = numbers.every(
function(item){
return(item>3);
});
alert(everyResult);//false

var filterResult = numbers.filter(
function(item){
return (item>3);
}
);
alert(filterResult);//4,6,5,4

var forEachResult = numbers.forEach(
function(item){
return (item>3);
}
);//该方法没有返回值,本质与for循环迭代数组一样

var mapResult = numbers.map(
function(item){
return (item*2);
});
alert(mapResult);//2,4,6,8,12,10,8,6,4,2

var someResult = numbers.some(
function(item){
return (item>3);
});
alert(someResult);//true
filter()对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。
forEach()对数组中的每一项运行给定函数,该方法没有返回值。
map()对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
some()对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
缩小方法
reduce()这两个方法都会迭代数组的所有项,然后构建一个最终返回的值其实就是将数组中的每一项累加起来。其中reduce()方法从数组的第一项开始,逐个遍历到数组的末尾。而ruduceRight()方法则从最后一项开始,向前遍历至第一项。 这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为缩小基础的初始值。
var arr = [1,2,3,4,5,6];
//传入一个回调函数
var reduce1 = arr.reduce(
function(pre,cur,index,array){
return pre + cur;
});
alert(reduce1);//21

var reduceRight1 = arr.reduceRight(
function(pre,cur,index,array){
return pre + cur;
});
alert(reduceRight1 );//21

//传入两个参数,一个是回调函数一个是初始值10
var reduce2 = arr.reduce(
function(pre,cur,index,array){
return pre + cur;
},10);
alert(reduce2);//31

var reduceRight2 = arr.reduceRight(
function(pre,cur,index,array){
return pre + cur;
},10);
alert(reduceRight2);//31


reduceRight()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数组 javascript array