JS 数组常用方法

作者: 生命里那束光 | 来源:发表于2022-05-12 09:30 被阅读0次

    一、JavaScript中创建数组的方式

    1.创建空数组,再给数组元素赋值

    //创建数组,不定义元素个数
    var myCars= new Array();
    
    //给数组元素赋值  可以不按照数组顺序进行赋值
    myCars[0]="aodi";
    myCars[1]="baoma";
    myCars[2]="benchi";
    
    console.log(myCars);//[aodi,baoma,benchi]
    

    2.使用new Array()创建数组

    var citys = new Array("杭州", "绍兴", "宁波", "温州");
    console.log(citys);//[杭州,绍兴,宁波,温州]
    

    3.使用数组字面量(隐式)

    var citys = ["杭州", "绍兴", "宁波", "温州"];
    console.log(citys);//[杭州,绍兴,宁波,温州]
    

    4.Array.of创建数组(ES6新增)

    Array.of()方法用于将一组值,转换为数组。

    Array.of()总是返回参数值组成的数组。如果没有参数,就返回一个空数组。

    Array.of(3, 11, 8) // [3,11,8]
    Array.of(3) // [3]
    Array.of(3).length // 1
    

    5.Array.from创建数组(ES6新增)

    Array.from()方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。

    let arrayLike = {   //类似数组的对象
        0: 'tom', 
        1: '65',
        2: '男',
        3: ['jane','john','Mary'],
        'length': 4
    }
    //转化为真正的数组
    let arr = Array.from(arrayLike)
    console.log(arr) // ['tom','65','男',['jane','john','Mary']]
    

    Array.from的三个参数:

    Array.from(arrayLike[, mapFn[, thisArg]] )
    1 参数一是被转换的对象
    2 参数二是一个map函数方法
    3 参数三是map里面this的指向

    注意:数组中如果不添加元素,那打印出来的元素的值默认就是undefined

    二、数组常用方法汇总

    JS数组方法 作用 返回值 用法
    join 把数组转换成字符串,可以设置连接符 字符串 arr.join("-")
    push 数组末尾增加内容 新数组的长度 arr.push(" ")
    pop 删除数组最后一项 删除的值 arr.pop( )
    shift 删除数组第一项 删除的值 arr.shift(" ")
    unshift 数组开头增加内容 新数组的长度 arr.unshift(" ")
    sort 数组里的项从小到大排序(比较字符串) 新数组 arr.sort( )
    reverse 反转数组项的顺序 新数组 arr.reverse( )
    concat() 数组拼接,不改变原来数组 新数组 arr.concat()
    slice() 数组截取 新数组 arr.slice( 开始下标 , 结束下标)
    splice() 删除、插入和替换 新数组 arr.splice( 2,0,4,6 )
    indexOf() 从前往后查找 返回索引(最新) arr.indexof( 5 )
    lastIndexOf() 从后往前查找 返回索引(最新) arr.lastIndexOf(5)
    forEach() 对数组进行遍历循环 arr.forEach()
    map() “映射”数组,对数组元素进行函数调用 新数组 arr.map()
    filter() “过滤”数组,返回满足条件的元素 新数组 arr.filter()
    every() 数组中每个元素是否都满足条件,逻辑“与” true或false arr.every()
    some() 数组中是否存在满足条件的元素,逻辑“或” true或false arr.some()
    prototype 查找数组的原型 proty Array.prototype
    ES6新增的方法
    find() 查找符合条件的元素 元素orubdefined arr.find()
    findIndex() 查找符合条件的元素的索引 对应的索引 arr.findIndex()
    includes() 判断一个数组是否包含一个指定的值 true或false arr.includes(value)
    Array.isArray() 判断一个对象是否为数组 true或false Array.isArray([])
    fill() 使用给定值,填充一个数组 新数组 Array(conut).fill(value)

    三、js数组常用的方法

    1. join()

    • join,就是把数组转换成字符串,然后给他规定个连接字符,默认的是逗号( ,)
    • 书写格式:join(" "),括号里面写字符串 (“要加引号”),
    var arr = [1,2,3];
    console.log(arr.join());  // 1,2,3
    console.log(arr.join("-")); // 1-2-3
    console.log(arr);   
    // [1, 2, 3(原数组不变)
    

    2. push()和pop()

    • push(): 把里面的内容添加到数组末尾,并返回修改后的长度。
    • pop():移除数组最后一项,返回移除的那个值,减少数组的length。
    • 书写格式:arr.push(" "),括号里面写内容 (“字符串要加引号”),
    • 书写格式:arr.pop( )
    var arr = ["Lily","lucy","Tom"];
    var count = arr.push("Jack","Sean");
    console.log(count);   // 5
    console.log(arr);   
    // ["Lily", "lucy", "Tom", "Jack", "Sean"]
    var item = arr.pop();
    console.log(item);   // Sean
    console.log(arr);   
    // ["Lily", "lucy", "Tom", "Jack"]
    

    3. shift() 和 unshift()

    • shift():删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。
    • unshift:将参数添加到原数组开头,并返回数组的长度 。
    • 书写格式:arr.shift(" "),括号里面写内容 (“字符串要加引号”),
    var arr = ["Lily","lucy","Tom"];
    var count = arr.unshift("Jack","Sean");
    console.log(count);               // 5
    console.log(arr);                //["Jack", "Sean", "Lily", "lucy", "Tom"]
    var item = arr.shift();
    console.log(item);   // Jack
    console.log(arr);   
    // ["Sean", "Lily","lucy", "Tom"]
    

    4. sort()

    • sort():将数组里的项从小到大排序(字符串类型)
    • 书写格式:arr.sort( )
    var arr1 = ["a", "d", "c", "b"];
    console.log(arr1.sort());  
    // ["a", "b", "c", "d"]
    

    5. reverse()

    • reverse():反转数组项的顺序。
    • 书写格式:arr.reverse( )
     var arr = [13, 24, 51, 3];
    console.log(arr.reverse());        
     //[3, 51, 24, 13]
    console.log(arr);              
     //[3, 51, 24, 13](原数组改变)
    

    6. concat()

    • concat() :将参数添加到原数组中。这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。
    • 书写格式:arr.concat(),括号里面写内容 (“字符串要加引号”),
    //场景1:数组和元素的拼接
    var arr = [1,3,5,7];
    var arrCopy = arr.concat(9,[11,13]);
    console.log(arrCopy);             
    //[1, 3, 5, 7, 9, 11, 13]
    console.log(arr);               
    // [1, 3, 5, 7](原数组未被修改)
    
    
    //场景2:两个数组的拼接
    let arr = [1, 2, 3, 4, 5];
    let arr1 = [6, 7, 8, 9];
    let arr2 = arr.concat(arr1);
    console.log(arr2);
    //[1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    7. slice()

    • slice():返回从原数组中指定开始下标到结束下标之间的项组成的新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下, slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。
    • 书写格式:arr.slice( 1 , 3)
    var arr = [1,3,5,7,9,11];
    var arrCopy = arr.slice(1);
    var arrCopy2 = arr.slice(1,4);
    var arrCopy3 = arr.slice(1,-2);
    var arrCopy4 = arr.slice(-4,-1);
    console.log(arr);               
    //[1, 3, 5, 7, 9, 11](原数组没变)
    console.log(arrCopy);             
    //[3, 5, 7, 9, 11]
    console.log(arrCopy2);            
    //[3, 5, 7]
    console.log(arrCopy3);            
    //[3, 5, 7]
    console.log(arrCopy4);            
    //[5, 7, 9]
    

    8.splice()

    • splice():删除、插入和替换。
    • 删除:指定 2 个参数:要删除的第一项的位置和要删除的项数。
    • 书写格式:arr.splice( 1 , 3 )
    • 插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、 0(要删除的项数)和要插入的项。
    • 书写格式:arr.splice( 2,0,4,6 )
    • 替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。
    • 书写格式:arr.splice( 2,0,4,6 )
    var arr = [1,3,5,7,9,11];
    var arrRemoved = arr.splice(0,2);
    console.log(arr);                
    //[5, 7, 9, 11]
    console.log(arrRemoved);            
    //[1, 3]
    var arrRemoved2 = arr.splice(2,0,4,6);
    console.log(arr);                
    // [5, 7, 4, 6, 9, 11]
    console.log(arrRemoved2);           // []
    var arrRemoved3 = arr.splice(1,1,2,4);
    console.log(arr);                
    // [5, 2, 4, 4, 6, 9, 11]
    console.log(arrRemoved3);           
    //[7]
    

    9.indexOf()和lastIndexOf()

    • indexOf():接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的开头(位置 0)开始向后查找。
    • 书写格式:arr.indexof( 5 )
    • lastIndexOf:接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。
    • 书写格式:arr.lastIndexOf( 5,4 )
    var arr = [1,3,5,7,7,5,3,1];
    console.log(arr.indexOf(5));       
    //2
    console.log(arr.lastIndexOf(5));    
    //5
    console.log(arr.indexOf(5,2));      
    //2
    console.log(arr.lastIndexOf(5,4));   
    //2
    console.log(arr.indexOf("5"));      
    //-1
    

    10. forEach()

    • forEach():对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值。参数都是function类型,默认有传参,参数分别为:遍历的数组内容;第对应的数组索引,数组本身。
    • 书写格式:arr.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
    

    11. map()

    • map():指“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
    • 书写格式:arr.map()
    var arr = [1, 2, 3, 4, 5];
    var arr2 = arr.map(function(item){
    return item*item;
    });
    console.log(arr2);        
    //[1, 4, 9, 16, 25]
    

    12.filter()

    • filter():“过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。简单来说就是filter 返回一个新数组,数组中是满足条件的元素
    • 书写格式:arr.filter()
    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    var arr2 = arr.filter(function(x, index) {
    return index % 3 === 0 || x >= 8;
    }); 
    console.log(arr2);         
    //[1, 4, 7, 8, 9, 10]
    

    13. every()

    • every():判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
    • 书写格式:arr.every()
    var arr = [1, 2, 3, 4, 5];
    var arr2 = arr.every(function(x) {
    return x < 10;
    }); 
    console.log(arr2);         //true
    var arr3 = arr.every(function(x) {
    return x < 3;
    }); 
    console.log(arr3);         // false
    

    14. some()

    • some():判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。
    • 书写格式:arr.some()
    var arr = [1, 2, 3, 4, 5];
    var arr2 = arr.some(function(x) {
    return x < 3;
    }); 
    console.log(arr2);         //true
    var arr3 = arr.some(function(x) {
    return x < 1;
    }); 
    console.log(arr3);         // false
    

    15、查找数组的原型

    console.log(Array.prototype);
    

    查找数组的原型

    四、ES6新增的数组方法

    16、find()

    • find 在数组中查找符合条件的元素,找到就返回 并且终止循环 找不到就是ubdefined
    • 书写格式:arr.find()
        let arr = [{id:1,name:'dee'},{id:2,name:'dee'},{id:3,name:'dee'},
        {id:4,name:'dee'},{id:5,name:'dee'}];
        // let obj = arr.find(function(item){
        //    return item == 3;
        // })
        // console.log(obj);
        // ubdefined
        let obj = arr.find(item => item.id > 1)
        console.log(obj);
        ({id:2,name:'dee'})  
    

    17、findIndex()

    • findIndex 在数组中查找符合条件的元素,找到就返回对应的索引 并且终止循环 -1
    • 书写格式:arr.findIndex()
        let arr = [1, 2, 3, 4, 5];
        let obj = arr.findIndex(function(item) {
            return item > 6;
        })
        console.log(obj);  // -1
    

    18、includes()

    • includes()方法,判断一个数组是否包含一个指定的值,返回一个布尔值。 参数是一个value,一般用于简单数组。
    • 对于复杂数组,则可以使用some()方法替代includes()方法
    • 书写格式:arr.includes(value)
    var a = [1,2,3]
    console.log(a.includes(1))  // true
    

    19、Array.isArray()方法

    • 用来判断一个对象是否为数组
    Array.isArray([])  // true
    Array.isArray({})  // false
    

    20、fill()方法

    • fill方法使用给定值,填充一个数组。
    ['a', 'b', 'c'].fill(7)
    // [7, 7, 7]
    
    new Array(3).fill(7)
    // [7, 7, 7]
    

    上面代码表明,fill方法用于空数组的初始化非常方便。数组中已有的元素,会被全部抹去。

    • fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。
    ['a', 'b', 'c'].fill(7, 1, 2)
    // ['a', 7, 'c']
    

    相关文章

      网友评论

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

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