JavaScript数组方法详解

 创建数组

    var arr = new Array();    //创建一个数组
    var arr = new Array([size]);    //创建一个数组并指定长度
    var arr = new Array(element0,element1,...,elementn);    //创建一个数组并赋值
    var arr = [];              //字面量创建数组;
    var arr = Array.of(element0,element1,...,elementn);    //将一组值转换为数组
  • Array.from()

       将伪数组变成数组,即只要有length属性就可以转换为数组。

 let hope = "success";
    console.log(hope.length);
    let arr = Array.from(hope);
    console.log(arr);

  

  • Array.of()

       将一组值转换为数组,类似于数组声明。   

let future = Array.of("success","hello","good");
    let hope1 = Array.of(100);
    console.log(future);
    console.log(hope1);

栈方法

先进后出

  • push()

       可以接收任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度。

let array = [11,22,33,44,55,66,77,88,99];
    array.push(100);
    console.log(array);
    console.log(array.length);

  • pop()

       从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

let array1 = [100,200,300,400];
    let delArray1 = array1.pop();
    console.log(array1);
    console.log(delArray1);

队列方法

先进先出。

  • shift()

       移除数组中的第一个项并返回该项,同时将数组长度减一。

let array1 = [100,200,300,400];
    let delArray1 = array1.shift();
    console.log(array1);
    console.log(array1.length);
    console.log(delArray1);

  • unshift()

       在数组前添加任意个项并返回新数组的长度。

let array1 = [100,200,300,400];
    let array1Length = array1.unshift(0);
    console.log(array1Length);
    console.log(array1);

排序方法

  • reverse()

       反转数组项的顺序。

let array1 = [100,200,300,400];
    array1.reverse();
    console.log(array1);

  • sort()

       从小到大升序排序,需要注意的是:sort的排序方法是根据数组转换字符串后来进行排序的。

let arr1 = [1,4,7,9,5,10];
    console.log(arr1.sort());

因为它们比较的是转换后的字符串值。

操作方法

  • concat()

        可以基于当前数组中的所有项创建一个新数组,不会影响原数组的值。

let arr2 = [1,2,3,4,5,6];
    let newArr2 = arr2.concat([7,8,9],[10,11,12,13]);
    console.log(newArr2);
    console.log(arr2);

 

  • slice()

      它可以基于当前数组中一个或多个项创建一个新数组。

  1. slice()方法可以接受一个或两个参数,即要返回项的起始和结束位置。
  2. 在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。
  3. 如果有两个参数,该方法返回起始和结束位置之间的项(不包含结束位置的个项)。
  4. slice()方法不会影响原数组。
    let arr3 = [3,4,5,6,7,8,9];
        let newArr3 =arr3.slice(1,4);
        console.log(newArr3);
        let newArr4 = arr3.slice(3);
        console.log(newArr4);
        console.log(arr3);

  • splice()

       删除:

      可以删除任意数量的项,只需要指定两个参数:要删除的第一项的位置和要删除的项数。splice(0,2)会删除数组中前两项。

let arr4 = [99,88,77,66,55];
    arr4.splice(0,2);
    console.log(arr4);

    

       插入、替换:

       可以向指定位置插入任意数量的项,只需要提供3个参数:起始位置、要删除的项数和要插入的项。如果插入多个项,可以再传入第四、第五,任意多个项。比如,splice(2,1,"hello","hi")会从当前数组的位置2并删除数组位置2的项然后插入字符串。

 let arr5 = [1,2,3,4,5];
    arr5.splice(2,1,"hello","hi");
    console.log(arr5);

 

  • arr.fill(target,start,end)

       使用给定的值,填充一个数组。需要注意的是:填充完后会改变原数组。

  1. target-待填充的元素
  2. start-开始填充的位置-索引
  3. 终止填充的位置-索引(不包括该位置)
    let arr6 = [1,2,3,4,5,6,7,8];
        let arr7 = [9,10,11,12,13];
        arr6.fill(9);
        console.log(arr6);
        arr7.fill(8,2,5);
        console.log(arr7);

  • Array.isArray(arr)

       判断传入的值是否为数组。

let arr8 = [];
    let obj ={};
    console.log(Array.isArray(arr8));
    console.log(Array.isArray(obj));

    

位置方法

  • indexOf()和lastIndex()

       这两个方法都接受两个参数:要查找的项和表示查找起点位置的索引。其中,indexOf()方法从数组的开头(位置0)开始向后查找。而lastIndexOf()方法则是从数组的末尾开始向前查找。

 let arr6 = [1,2,3,4,5,6,7,8];
    console.log(arr6.indexOf(2));
    console.log(arr6.lastIndexOf(2));
    console.log(arr6.indexOf(1,2));
    console.log(arr6.lastIndexOf(1,2));

  • find()

       数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。

let arr7 = [1,2,3,4,5,6,7];
    let index = arr7.find(val => val===3);
    let index1 = arr7.find(val => val===8);
    console.log(index);
    console.log(index1);

  • findIndex()

       和数组find方法相似,返回符合条件的第一个项的位置。如果所有成员不符合则返回-1。

let arr7 = [1,2,3,4,5,6,7];
    let index = arr7.findIndex(val => val===3);
    let index1 = arr7.findIndex(val => val===8);
    console.log(index);
    console.log(index1);

  • includes()

       方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串includes方法类似。

迭代方法

  • every()

       对数组的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。

  • filter()

       对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组。

let arr7 = [1,2,3,4,5,6,7];
    let newArr7 = arr7.filter(value => value > 3);
    console.log(newArr7);

 

  • forEach()

       对数组的每一项运行给定函数,没有返回值。

  • map()

       对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组。

let arr7 = [1,2,3,4,5,6,7];
    let newArr7 = arr7.map(value => value +100);
    console.log(newArr7);

 

  • some()

       对数组的每一项运行给定函数,如果该函数对任一项返回true,则返回true。

  • reduce()和reduceRight()

        这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。其中reduce()方法从数组的第一项开始,逐个遍历到最后。而reduceRight()则从数组的最后一项开始,向前遍历到第一项。

  • entries(),keys()和values()

       ES6 提供三个新的方法——entries(),keys()和values()——用于遍历数组。它们都返回一个遍历器对象,可以用for…of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

let arr7 = [1,2,3,4,5,6,7];
    for(let val of arr7.entries()){
        console.log(val);
    }
    for(let val1 of arr7.keys()){
        console.log(val1);
    }
    for(let val2 of arr7.values()){
        console.log(val2);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值