美文网首页javascript Vue uni-app
ES6中你所不知道的数组操作

ES6中你所不知道的数组操作

作者: 辉夜真是太可爱啦 | 来源:发表于2019-08-26 10:51 被阅读0次

    1.concat()方法用于连接两个或多个数组

    let arr1=[1,2];
    let arr2=[3,4];
    let arr3=[5];
    let sum=arr1.concat(arr2,arr3);
    console.log(sum);    //输出结果[1,2,3,4,5]
    

    2.every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)(every() 不会改变原始数组,对于空数组并不会执行)

    let ages = [32, 33, 16, 40];
    function checkAdult(age) {
        return age >= 18;
    }
    console.log(ages.every(checkAdult));    //输出结果为false
    

    3.fill() 方法用于将一个固定值替换数组的元素,原数组长度为多少,填充之后长度也为多少

    var fruits = [2, 4, 6,8];
    console.log(fruits.fill(3));   //输出结果为[3,3,3,3]
    

    4.filter()方法创建一个新的数组,新数组中的元素是返回符合条件的所有元素。(filter() 不会改变原始数组,对于空数组不会执行)

    let ages = [32, 33, 16, 40];
    function checkAdult(age) {
        return age >= 18;
    }
    console.log(ages.filter(checkAdult));    //输出结果为[32,33,40]
    

    5.find() 方法返回符合条件的第一个元素的值。(find() 不会改变数组的原始值,对于空数组不会执行)

    var ages = [3, 10, 18, 20];
    function checkAdult(age) {
        return age >= 18;
    }
    console.log(ages.find(checkAdult));    //输出结果为18
    

    6.findIndex()方法返回符合条件的第一个元素的索引位置。(findIndex() 不会改变数组的原始值,对于空数组不会执行,如果没有符合条件的元素返回 -1)

    var ages = [3, 10, 18, 20];
    function checkAdult(age) {
        return age >= 18;
    }
    console.log(ages.findIndex(checkAdult));    //输出结果为2
    

    7.forEach()方法相当于一个for循环,itemindex以及数组本身都会以回调函数的形式返回

    var numbers = [4, 9, 16, 25];
    alert(numbers.forEach((item,index,arr)=>{
        console.log(item,index,arr);
            //输出结果为
            //4 0 [4,9,16,25]
            //9 1 [4,9,16,25]
            //16 2 [4,9,16,25]
            //25 3 [4,9,16,25]
    }))
    

    8.Array.from()有很多种用法,我认为比较有用的是一个对所有元素进行统一操作的方法

    let arr=[1,2,3];
    alert(Array.from(arr,x=>x*2));    //输出结果为[2,4,6]   x即为一个回调函数的参数
    

    9.includes()方法用于返回数组中是否含有该元素,有则true,没有则为false,可以选填第二个参数为开始查找的索引起点位置

    [1, 2, 3].includes(2);     // true
    [1, 2, 3].includes(4);     // false
    [1, 2, 3].includes(3, 3);  // false
    [1, 2, 3].includes(3, -1); // true
    

    10.map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。(map() 不会对空数组进行检测且不会改变原始数组。)

    let numbers = [4, 9, 16, 25];
    
    function myFunction() {
        x = document.getElementById("demo")
        x.innerHTML = numbers.map(Math.sqrt);    //输出结果为[2,3,4,5]
    }
    

    11.some()方法用于检测数组中的元素是否满足指定条件(函数提供)。(some() 不会对空数组进行检测且不会改变原始数组。)

    let ages = [3, 10, 18, 20];
    
    function checkAdult(age) {
        return age >= 18;
    }
    console.log(ages.some(checkAdult));      //输出结果为true
    

    12.reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。相当于数组中的所有元素先经过函数处理,然后进行累加(reduce() 不会对空数组进行检测且不会改变原始数组。)

    var numbers = [15.5, 2.3, 1.1, 4.7];
    
    function getSum(total, num) {
        return total + Math.round(num);    //对数值进行四舍五入,然后累加
    }
    function myFunction(item) {
        document.getElementById("demo").innerHTML = numbers.reduce(getSum, 0);    //可以计算出结果为16+2+1+5=24,输出结果为24
    }
    

    不过上面的方法可以用箭头函数的回调重写

    let numbers=[15.5, 2.3, 1.1, 4.7];
    
    function myFunction(item) {
        document.getElementById("demo").innerHTML = numbers.reduce((x,y)=>Math.round(x)+Math.round(y));
    }
    

    总结而言,其实很多新增的函数都是一个for循环能解决的事情,就是相当于给你封装了一个方法,但是,相当于是多了一种达到目的的办法,而且,用习惯了也不错,能让你少写很多代码,也看起来更加高大上,从此少用for循环,多尝试新的es6方法吧

    文中主要参考了菜鸟,如果还有不全的数组操作也请参考这里

    相关文章

      网友评论

        本文标题:ES6中你所不知道的数组操作

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