美文网首页干货
JS数组操作

JS数组操作

作者: 来了啊小老弟 | 来源:发表于2018-10-16 16:59 被阅读76次

    1.栈方法  push()和pop() 

    后入先出

    push():末尾追加

    pop():末尾弹出

    2.队列方法

    先入先出

    unshift():头部添加

    shift():头部取得

    3.重排序方法

    reverse()和sort()

    reverse()反转数组项的顺序:

    var a=[1,2,3,4,5,"p"];

    alert(a.reverse());     //["p",5,4,3,2,1]

    sort():默认情况下按升序排列数组项

    sort()会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序,即使数组中每一项都是数字,最后比较的也是字符串,但这不是最佳方案,比如数组项有10和5,进行字符串比较时“10”会在“5”的前面,但是5应该比10小。因此sort()方法可以接受一个比较函数作为参数。

    比较函数接受两个参数,如果第一个参数应该位于第二个参数之前,则返回负数,相等则返回0,第二个参数比第二个大则返回正数,一下就是一个比较简单的比较函数。

    function compare(value1,value2){

        if(value1<value2){

            return -1;

        }else if(value1==value2){

            return 0;

        }else{

            return 1;

        }

    }

    var arr=[0,1,5,10,15];

    arr.sort(compare);    //[0,1,5,10,15]

    对于数值类型或者其valueof()返回数值类型的对象类型,可以使用一个更简单的比较函数。

    function conpare(num1,num2){

        return num1-num2;

    }

    4.操作方法

    concat():拼接数组

    var color=["red","blue"];

    var color2=color.concat("yellow",["black","brown"])    //[ "red","blue", "yellow" , "black","brown" ]

    slice():基于当前数组创建新数组,不会影响原始数组(截取数组)

    var arr=[1,2,3,4,5,6,7];

    var arr2=arr.slice(1);    //[2,3,4,5,6,7]   下标1到数组结束

    var arr2=arr.slice(1,4);    //[2,3,4]    下标1到4,不包含1和4

    如果slice()接受的参数为负数,则此负数加上数组长度;

    slice(-2,-1);数组长度为5  则等于slice(3,4)

    splice():删除,插入,替换

    三个参数:1.操作起始位置 2.删除的项数 3.插入的项

    splice(0,2) :删除数组的前两项

    splice(1,0,"red","yellow") :  从位置1开始插入两项

    splice(1,1,"red","yellow"):从位置1删除一项,插入两项

    5.位置方法

    indexOf()与lastIndexOf();

    这两个方法接受两个参数,查找项和开始查找的下标,找到返回下标值,没找到则返回-1,查找时使用===操作符;

    indexOf()从头部开始查找,lastIndexOf()从尾部开始查找;

    6.迭代方法

    every():对数组中的每一项给定函数,每一项都返回true,则返回true;

    some():对数组中的每一项给定函数,任一项返回true,则返回true;

    filter():对数组中的每一项给定函数,返回函数会返回true项组成的数组;

    foreach():对数组中的每一项给定函数,这个方法没有返回值;

    map():对数组中的每一项给定函数,返回每次函数调用结果组成的数组;

    var number=[1,2,3,4,5,4,3,2,1];

    var everyResult=number.every((item,index,array) => {

        return (item > 2);

    }) 

    alert(everyResult);   //false

    var someResult=number.every((item,index,array) => { 

         return (item > 2); }) 

    }) 

    alert(someResult);   //true 

    var filterResult=number. filter((item,index,array) => {

            return (item > 2); })  

    })  

    alert( filterResult );   //[3,4,5,4,3]

    var mapResult=number. map((item,index,array) => { 

            return item*2;     

    }) 

    alert(  mapResult );   //[2,4,6,8,10,8,6,4,2] 

    foreach()本质上与使用for循环迭代数组一样,不做赘述

    7.归并方法

    reduce():从第一项开始,逐个遍历到最后;

    reduceRight():从最后一项开始到第一项;

    自动接收四个参数,前一个值,当前值,项的索引值和数组对象,这个函数返回的任何值都会作为第一个参数自动传给下一项,第一次迭代发生在第二项上。

    var values=[1,2,3,4,5];

    var sum=values.reduce( (prev,cur,index,arr) => {

            return prev+cur;

    })

    alert(sum);    //15

    相关文章

      网友评论

        本文标题:JS数组操作

        本文链接:https://www.haomeiwen.com/subject/qkdhzftx.html