• js数组的各种方法


    1.检测数组

    ①Instanceof:

    if(value instanceof Array){
    }

    它假定只有一个全局执行环境,若网页中包含多个框架,则存在多个不同的全局执行环境,则Instanceof不能正确检测;

    ② Array.isArray()

    无论几个全局执行环境都可以;

    if(Array.isArray(value)){
    }

    2.转换方法

    ③ toString()

    会返回数组的每个值拼接起来的字符串(以逗号分隔);不会影响原数组;

    var colors=['red','black','blue'];
    colors.toString();//red,black,blue

    ④  valueOf()

    返回数组; 不会影响原数组;

    var colors=['red','black','blue'];
    colors.valueOf();// ["red", "black", "blue"]
    var colors=['red','black','blue'];
    alert(colors.valueOf());//red,black,blue
    //因为alert()要接受字符串参数,所以其会在后台调用toString()方法,所以弹出的是字符串

    ⑤ toLocaleString()

    与上两个相同;

    ⑥ join()

    接收一个参数,用作字符串的分隔符,返回字符串; 不会影响原数组;

    var colors=['red','black','blue'];
    colors.join('||');// red||black||blue

    3.栈方法

    ⑦  push()

    将接受到的参数添加到数组末尾,返回字符串的长度; 影响原数组;

    var colors=['red','black','blue'];
    colors.push('green','pink');        //5

    ⑧ pop()

    移除数组末尾的最后一项,返回移除的项;影响原数组;

    var colors=['red','black','blue'];
    colors.pop();       //blue

    pop()和push()结合使用,可以实现队列方法;

    4.队列方法

    ⑨ shift()

    移除数组的第一项,并返回该项;影响原数组;

    1 var colors=['red','black','blue'];
    2 colors.shift();       //red

    ⑩  push()

    shift()和push()结合使用,可以实现队列方法;

    11.  unshift()

    将接受到的参数添加到数组前端,返回字符串的长度;

    var colors=['red','black','blue'];
     colors.unshift("green");                 //4

    5.重排序方法

    12.  reverse()

    反转数组项顺序,改变数组本身,返回数组本身;;

    var number=[1,2,3,5,4];
    value=number.reverse();      //[4, 5, 3, 2, 1]
    console.log(value)               // [4, 5, 3, 2, 1]
    console.log(number)           // [4, 5, 3, 2, 1]

    13.sort()

    改变数组本身的值,返回数组本身;

    var number=[1,2,3,5,4];
    value=number.sort(compare);      //[1,2,3,4,5 ]  
    function compare(a,b){
         return a-b;
    }
    console.log(number);             //[1, 2, 3, 4, 5]

    6.操作方法

    14.  concat()

    连接几个数组,返回新构建的数组;不会影响数组本身;

    var colors=['red','black','blue'],col=["pink","green"],colo=['brown'];
    
     colors.concat(col,colo,'yellow');   
    //["red", "black", "blue", "pink", "green", "brown", "yellow"]      

    15. slice()

    接受1或2个参数,即返回项的起始和结束位置;不会影响数组本身;

    var colors=['red','black','blue'];
     colors.slice(1,2);          //["black"]
     colors.slice(1);             // ["black", "blue"]

    16. splice()   

    原数组随之改变;返回删除的项(数组形式),若未删除则返回空数组;

    输入2个参数: 起始位置和要删除的数组长度;

    删除:

    var colors=['red','black','blue'];
     colors.splice(1,2);          //["black", "blue"]
    console.log(colors);        //["red"]

    输入3个参数:

    插入:  起始位置,要删除的数组长度(0),要插入的项;

    var colors=['red','black','blue'];
     colors.splice(1,0,'green');          //[]
    console.log(colors);        //["red", "green", "black", "blue"]

    替换: 起始位置,要删除的数组长度,要插入的项;

    var colors=['red','black','blue'];
     colors.splice(1,1,'green','purple');          //["black"]
    console.log(colors);        //["red", "green", "purple", "blue"]

    7.位置方法

    17.  indexOf() :从开头往后查找

    输入:要查找的项和(查找起点位置的索引){默认为0};返回要查找的项在数组中的位置;

    var colors=['red','black','blue','black','green'];
     colors.indexOf('black');          //1
    colors.indexOf('black',2);       //3

    18.lastIndexOf() :从末尾往前查找

    输入:要查找的项和(查找起点位置的索引){默认为length-1};返回要查找的项在数组中的位置;

    var colors=['red','black','blue','black','green'];
     colors.lastIndexOf('black');          //3
    colors.lastIndexOf('black',2);       //1

    8.迭代方法

    every(),filter()…

    http://www.cnblogs.com/sunmarvell/p/8674935.html

    9.归并方法

    24  reduce()

    迭代数组的所有项,构建一个最终返回值; 不改变原数组的值

    从第一项开始,逐个遍历到最后;

    var number=[1,2,3,5,4];
    value=number.reduce(compare);      //-13 
    function compare(a,b){
         return a-b;
    }
    console.log(number);             //[1,2,3,5,4]

    25  reduceRight()

    迭代数组的所有项,构建一个最终返回值; 不改变原数组的值

    从最后一项开始,逐个遍历到第一项;

    var number=[1,2,3,5,4];
    value=number.reduceRight(compare);      //-7 
    function compare(a,b){
         return a-b;
    }
    console.log(number);             //[1,2,3,5,4]
  • 相关阅读:
    bzoj1005: [HNOI2008]明明的烦恼(prufer+高精度)
    bzoj1211: [HNOI2004]树的计数(prufer序列+组合数学)
    bzoj1430: 小猴打架(prufer序列)
    bzoj1029: [JSOI2007]建筑抢修(堆+贪心)
    bzoj1053: [HAOI2007]反素数ant
    [HNOI2012]双十字
    [HNOI2012]矿场搭建
    [HNOI2012]集合选数
    [HNOI2013]消毒
    POJ2449 Remmarguts' Date
  • 原文地址:https://www.cnblogs.com/sunmarvell/p/9043466.html
Copyright © 2020-2023  润新知