JavaScript数组方法

本文数组方法总结来源于慕课网《JavaScript深入浅出》课程

一、Array.prototype.join

    var arr = [1,2,3];
    arr.join();     //"1,2,3"
    arr.join("_")   //"1_2_3"

    function repeatString(str, n) {
        return new Array(n+1).join(str);
    }

    repeatString("u", 3);    //"uuu"
    repeatString("Love", 5); //"LoveLoveLoveLoveLove"

二、Array.prototype.reverse

    var arr = [1,2,3];
    arr.reverse();   //[3,2,1]
    arr;             //[3,2,1]

三、Array.prototype.sort

    //sort()函数默认可以按照字母顺序排序      
    var arr = ["a","d","c","b"];
    arr.sort();          //["a","b","c","d"]

    //sort()在这里将数组元素转换为String后按"1","2","3","4"排序
    arr = [13,24,51,3];
    arr.sort();          //[13,24,3,51]
    arr;                 //[13,24,3,51]
    //升序排列需要返回负数,反之返回正数
    arr.sort(function (a,b){
        return a - b;
    });                  //[3,13,24,51]

四、Array.prototype.concat

    //与sort()不同,调用concat方法原数组不会被修改
    var arr = [1,2,3];
    arr.concat(4,5);           //[1,2,3,4,5]
    arr;                       //[1,2,3]

    arr.concat([10,11],12);    //[1,2,3,10,11,12]
    arr.concat([1,[2,3]]);     //[1,2,3,1,[2,3]]  

五、Array.prototype.slice

    //第一个参数为截取数组的起始索引值,第二个参数为截取到的索引值但不返回这个
    //索引值对应的值,即slice两个参数对应左闭右开区间
    var arr = [1,2,3,4,5]
    arr.slice(1,3);      //[2,3]
    arr.slice(1);        //[2,3,4,5]
    arr.slice(1,-1);     //[2,3,4]
    arr.slice(-4,-3);    //[2]

六、Array.prototype.splice

    //splice会对原数组进行修改
    //第一个参数表示删除的起始索引值,第二个参数表示从起始索引值
    //开始删除的个数,之后传入的无数个参数即在被删除数值的索引位置
    //添加数值
    var arr = [1,2,3,4,5];
    arr.splice(2);              //return [3,4,5]
    arr;                        //[1,2]

    var arr = [1,2,3,4,5];
    arr.splice(2,2);            //return [3,4]
    arr;                        //[1,2,5]

    arr = [1,2,3,4,5];
    arr.splice(1,1,'a','b');    //return [2]
    arr;                        //[1,'a','b',3,4,5]

七、Array.prototype.forEach

    var arr = [1,2,3,4,5];
    arr.forEach(function (x,index,a){
        console.log(x + '|' + index + '|' + (a === arr));
    });
    //1|0|true
    //2|1|true
    //3|2|true
    //4|3|true
    //5|4|true

八、Array.prototype.map

    var arr = [1,2,3];
    arr.map(function() {
        return x + 10;
    });      //[11,12,13]
    arr;     //[1,2,3]

九、Array.prototype.filter

    var arr = [1,2,3,4,5,6,7,8,9,10];
    //注意注意!!这里的index是索引值,对应下面的前三个返回值的索引值
    //为0,3,6
    arr.filter(function(x,index){
        return index%3 === 0||x>=8;
        });         //return [1,4,7,8,9,10] 
    arr;            //[1,2,3,4,5,6,7,8,9,10]

十、Array.prototype.every&some

    var arr = [1,2,3,4,5];
    arr.every(function(x) {
        return x < 10;
    });       //true

    arr.every(function(x) {
        return x < 3;
    });       //false

    var arr = [1,2,3,4,5];
    arr.some(function() {
        return x === 3; 
    });       //true
    arr.some(function() {
        return x === 100;
    });       //false

十一、Array.prototype.reduce&reduceRight

    //reduce函数迭代的时候会把每一次的调用结果
    //在下一次调用时传给第一个参数
    //这时候第二个参数即是数组中的下一个数值
    var arr = [1,2,3];
    var sum = arr.reduce(function() {
        return x + y;
    },0);           //6
    arr;            //[1,2,3]

    var arr = [3,9,6];
    var max = arr.reduce(function() {
        console.log(x + "|" + y);
        return x > y ? x : y;
    });
    //3|9
    //9|6
    max;   //9

    //reduceRight()从最右参数开始遍历操作
    max = arr.reduceRight(function(x,y) {
        console.log(x + "|" + y);
        return x > y ? x : y;
    });
    // 6|9
    // 9|3
    max;   //9

十二、Array.prototype.indexOf&lastIndexOf

    //根据传入参数返回数组中对应的索引值,第一个参数为要查找的数值
    //第二个参数为开始查找的索引位置
    var arr = [1,2,3,2,1];
    arr.indexOf(2);    // 1
    arr.indexOf(99);   // -1
    arr.indexOf(1,1);  // 4
    arr.indexOf(1,-3); // 4
    arr.indexOf(2,-1); // -1

    //lastindexOf从右向左查找
    arr.lastindexOf(2);    // 3
    arr.lastindexOf(2,-2); // 3
    arr.lastindexOf(2,-3); //1

十三、Array.isArray

    Array.isArray([]);   //true

字符串和数组

    由于字符串是一个类数组对象,可以利用一些类似数组用法来取值
    var str = "hello world";
    str.charAt(0);     // "h"
    str[1];            // e

    //call方法可以将参数传入其他对象原型的方法并返回值
    //(应该已经理解,不理解回头去看JavaScript语言精粹)
    Array.prototype.join.call(str, "_");
    //"h_e_l_l_o__w_o_r_l_d"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值