JS数组常用方法

作者: 哎呦_連啓 | 来源:发表于2018-12-05 16:40 被阅读0次

    Array数组类型

    数组的每一项都可以保存任何类型的数据,创建数组的方法可以使用Array构造函数

    var ary = new Array();
    

    使用Array构造函数也可以省略new操作符

    var colors = Array('red');  //创建一个包含一项,即字符串“red”的数组
    

    创建数组也可以使用数组字面量表示法创建

    var names = [];  //创建一个名为names的空数组
    var colors = ['red','blue'];  //创建一个包含2个字符串的数组
    

    转换方法

    1.toString()

    数组转字符串,数组调用toString()方法会返回一个以逗号分割的字符串,没有参数

    var colors1 = ['red','blue','green'];
    var colors2 = colors1.toString();
    console.log(colors2);  // "red,blue,green"
    
    2.join()

    join()方法可以把数组转化成字串,join()只接收一个参数,即用作分隔符的字符串,返回一个以分隔符分割的字符串

    var colors1 = ['red','blue','green'];
    var colors2 = colors1.join('+');
    console.log(colors2);  // "red+blue+green"
    

    栈方法

    3.push()

    push()方法可以接收多个参数,把它们逐个插入到数组的末尾,返回值为修改后数组的长度,原数组会发生改变

    var colors = ['red'];
    var count = colors.push('blue','green');
    console.log(count);  // 3
    console.log(colors);  // ["red", "blue", "green"]
    
    4.pop()

    pop()的作用则与push()相反,pop()方法是从数组末尾删除最后一项,减少length值,返回被移除的项,原数组发生改变,可以用该方法获取数组最后一项

    var colors = ['red','blue','green'];
    var item= colors.pop();
    console.log(item);  // "green"
    console.log(colors);  // ["red", "blue"]
    

    队列方法

    栈数据的访问规则是后进先出,而队列结构的访问规则是先进先出。队列在列表的末端添加项,从列表的前端移除项。

    5.shift()

    shift()方法能够移除数组的第一项,并且返回该值,原数组的length长度减1,可以用该方法获取数组的第一项

    var colors = ['red','blue','green'];
    var item = colors.shift();
    console.log(item);  // "red"
    console.log(colors);  // ["blue", "green"]
    
    6.unshift()

    unshift()与shif()的用途相反,可以在数组的前端增加多项并返回新数组的长度,原数组发生改变

    var colors = ['red'];
    var count = colors.unshift('blue','green');
    console.log(count);  // 3
    console.log(colors);  // ["blue", "green", "red"]
    

    重排序方法

    7.reverse()

    reverse()方法可以实现数组的翻转,原数组也将发生改变

    var num = [1,2,3,4,5];
    var arr= num.reverse();
    console.log(arr);  //[5,4,3,2,1]
    console.log(num);  //[5,4,3,2,1]
    
    8.sort()

    在默认情况下,sort()方法按排列数组项,小的在前,大的在后。sort()方法会调用toStriing()方法,然后比较得到的字符串,即使数组中每一项都是数值,比较的也是字符串

    var num = [0,1,5,10,15];
    console.log(num.sort());  //[0, 1, 10, 15, 5]
    

    因此sort()方法可以接收一个比较函数作为参数

    var num = [0,1,5,10,15];
    num = num.sort(function compare(a,b){
       return a-b
    });
    console.log(num);  // [0, 1, 5, 10, 15]
    

    如果要产生降序的结果,只需要把返回值的两个参数换一下位置就可以

    var num = [0,1,5,10,15];
    num = num.sort(function compare(a,b){
        return b-a
    });
    console.log(num);   // [15, 10, 5, 1, 0]
    

    操作方法

    9.concat()

    cancat()可以实现数组的拼接,可以传递一到多个数组,如果传递的不是数组,这些值就会简单的添加到结果数组的末尾。如果concat()没有传递参数,则可以实现对原数组的复制

    var colors = ['red','blue'];
    var colors2 = colors.concat('yellow',['black','white']);
    var colors3 = colors.concat();  //实现对原数组的复制
    console.log(colors2);   // ["red", "blue", "yellow", "black", "white"]
    console.log(colors3);   // ["red", "blue"]
    console.log(colors);    // ["red", "blue"]
    
    10.slice()

    slice()可以接收一到两个参数,如果只有一个参数时,返回从该参数开始到当前数组末尾的所有项,两个参数时,返回从第一个参数开始到第二个参数之间的所有项,不包括结束位置的项,即包前不包后。slice()方法没有传递参数时可以实现对原数组的复制

    var colors = ['red','blue','yellow','black','white'];
    var colors2 = colors.slice(1);  //一个参数
    var colors3 = colors.slice(1,3);  //两个参数
    var colors4 = colors.slice();   //实现对原数组的复制
    console.log(colors2);   // ["blue", "yellow", "black", "white"]
    console.log(colors3);   // ["blue", "yellow"]
    console.log(colors4);   // ["red", "blue", "yellow", "black", "white"]
    console.log(colors);    // ["red", "blue", "yellow", "black", "white"]
    
    11.splice()

    splice()方法比较强大,可以实现数组的插入,删除和替换

    • 插入
      可以向指定位置插入多项,需要3个参数:起始位置,0,要插入的内容。如果要插入多项,可以再继续传入要插入的项返回一个空数组
    var colors = ['red','blue'];
    var values= colors.splice(1,0,'green','black');
    console.log(colors);    // ["red", "green", "black", "blue"]
    console.log(values);    // []
    
    • 删除
      可以从指定位置开始删除一到多个,需要两个参数:要删除第一项的位置,要删除的个数。返回被删除的内容,以一个行数组的形式返回
    var colors = ["red", "green", "black", "blue","yellow"];
    var values= colors.splice(1,3);
    console.log(colors);    // ["red", "yellow"]
    console.log(values);    // ["green", "black", "blue"]
    
    • 替换
      从指定位置删除多个,并同时插入多个,需要3个参数:起始位置,要删除的项数,要插入的内容。返回被删除的内容,以一个新数组的形式返回。
    var colors = ["red", "green", "black", "blue","yellow"];
    var values= colors.splice(1,3,"pink","purple","white");
    console.log(colors);    // ["red", "pink", "purple", "white", "yellow"]
    console.log(values);    // ["green", "black", "blue"]
    

    如果splice()方法只传递一个参数“0”,可以实现对原数组的复制

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

    位置方法

    12.indexOf()

    indexOf()接收两个参数:要查找的内容和查找的起点位置的索引(可选)。indexOf()查找时是从前往后查找,查找到则返回对应位置索引,没有查找到返回-1。

    var nums = [1,2,3,4,5,6];
    var item1 = nums.indexOf(4);
    var item2 = nums.indexOf(8);  //查找数组中不存在的项
    console.log(item1); //3
    console.log(item2); //-1
    
    13.lastIndexOf()

    lastIndexOf()接收两个参数:要查找的内容和查找的起点位置的索引(可选)。indexOf()查找时是从末尾往前查找,查找到则返回对应位置索引,没有查找到返回-1。

    var nums = [1,2,3,4,5,6];
    var item1 = nums.lastIndexOf(2);
    var item2 = nums.lastIndexOf(8);  //查找数组中不存在的项
    console.log(item1); //1
    console.log(item2); //-1
    

    迭代方法

    14.forEach()

    forEach()可以实现对数组的遍历,没有返回值,再回调函数中可以操作数组中的每一项及其对应的索引

    var nums = [1,2,3,4,5,6];
    nums.forEach(function (item,index,array){
      //执行某些操作
      //item为遍历的数组的每一项
      //index为为遍历的数组的每一项对应的索引
      //array为原数组
    })
    
    15.map()

    map()也可以实现对数组的遍历,有返回值,回调函数可以返回一个数组

    var nums = [1,2,3,4,5,6];
        var mapResult = nums.map(function (item,index,array){
            return item
        })
        console.log(mapResult);  // [1,2,3,4,5,6]
    

    相关文章

      网友评论

        本文标题:JS数组常用方法

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