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

方法名 功能
示例


栈方法和队列方法


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()
时间: 2024-11-05 14:47:51

一张表说明javascript 数组的几个重要方法的相关文章

Javascript数组去重的几种方法

Javascript数组去重的几种方法 新建空数组,通过for...of(ES6)循环遍历,通过indexOf判断元素是否在新数组中存在,将不存在的(indexOf(n)==-1)元素push到新数组中: let arr = [1,1,2,2,3,6,3,77,88,5,98,9,7,2,7,5,3,4,2]; function removeDup_indexOf(originalArr){ let newArr = []; for(n of originalArr){ if(newArr.in

Javascript数组的5种迭代方法

#Javascript数组的5种迭代方法 数组当中定义了5个迭代方法,传入这些方法中的函数会接受三个参数,数组项的值,该项在数组的位置,和数组对象本身,以下是5个迭代方法的作用. 1.every方法: 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true. let arr1 = [1,2,3,4,5,6]; let arr2 = [-1,-2,-3,-4,-5,-6]; let every1 = arr1.every((item,index,arr)=>{ return

javascript数组的实例属性(方法)

javascript的所有数组实例对象,除了可以给自己增删属性之外:都会从Array.prototype继承属性(方法).修改Array的原型会影响所有的数组实例. 数组实例的属性: Array.prototype.constructor: 所有数组都继承了这个属性,它的只是''Array'',表明了所有的数组都是有Array构造出来的. Array.prototype.length: 因为Array.prototype也是个数组,所以也有length属性,这个值为0,因为它是个空数组.这个也不

javascript数组去重的4个方法(转)

原文地址:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277 面试前端必须准备的一个问题:怎样去掉Javascript的Array的重复项.据我所知,百度.腾讯.盛大等都在面试里出过这个题目. 这个问题看起来简单,但是其实暗藏杀机. 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解. 方法一: Array.prototype.unique1 = function() { var n = []; //一个新

javascript数组去重的3种方法

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>数组去重</title> </head> <body> <script type="text/javascript"> //注意有一个元素是空的 var test1 = [0,0,1,1,2,'sss',2,,3,'abc',3,4,4,'s

JavaScript数组的三种定义方法

数组的定义: 1 <script type="text/javascript"> 2 // <!--声明数组--> 3 // 1.先声明数组长度,后进行赋值 4 var arr=new Array(5); 5 document.write("数组长度为:"+arr.length+"<br/>"); 6 var num=4; 7 for(var i=0;i<arr.length;i++){ 8 num=nu

javascript数组去重的三种常用方法,及其性能比较

在进行数组操作时往往会遇到去掉重复项的问题,下面简单介绍下数组去重的方法,以及其执行效率 方法一        采用两次循环        原理:拿当前的和他后面的比,如果后面的有重复的就干掉        但是我们发现数组最后一项,后面没有东西,那他就不用和后边的比较了,所以我们只要循环arr.length-1次就可以了 1 var arr=[1,3,5,3,5]; 2 3 var len=arr.length; 4 for(var i=0;i<len-1;i++){ 5 var curIte

JavaScript数组去重的四种方法

今天,洗澡的想一个有趣的问题,使用js给数组去重,我想了四种方法,虽然今天的任务没有完成,5555: 不多说,po代码: //方法一:简单循环去重    Array.prototype.unique1 = function(){                var temp = [];        for(var i=0; i < this.length; i++){            if(temp.indexOf(this[i]) == -1){                tem

javascript数组去重的两个方法

方法一: 创建一个临时数组,判断目标数组中每个元素是否在临时数组中,如果不在就添加进临时数组,最后return临时数组 <script> var arr=[1,2,3,4,5,1,2,3,4,5,6,7,8]; function findInArr(arr,n){ for(var i=0;i<arr.length;i++){ if(n==arr[i]){ return true; } } return false; } function removeArrRepeate(arr){ va