码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-08-15 22:45:30      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:javascript   数组   array   


方法名
功能

示例































栈方法和队列方法

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()







本文出自 “Fcheng” 博客,请务必保留此出处http://fcheng.blog.51cto.com/10644114/1838560

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

标签:javascript   数组   array   

原文地址:http://fcheng.blog.51cto.com/10644114/1838560

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!