js数组相关的方法详解

js 数组方法
  • join():用指定的分隔符将数组每一项拼接为字符串

      const arr = ['h','e','l','l','o']
      const result = arr.join(',') 
      console.log(result)//输出结果为h,e,l,l,o	
    
  • push() :向数组的末尾添加新元素

     const arr = ['h','e','l','l','o']
     const result = arr.push('w') 
     console.log(result)//返回添加后数组的长度6
    
  • pop():删除数组的最后一项

     const arr = ['h','e','l','l','o']
     const result = arr.pop()
     console.log(result) //返回删除的元素'o'
    
  • shift():删除数组的第一项

    const arr = ['h','e','l','l','o']
    const result = arr.shift() 
    console.log(result) //返回删除的元素 'h'
    
  • unshift():向数组首位添加新元素

     const arr = ['h','e','l','l','o']
     const result = arr.unshift('w') 
     console.log(result) //6,返回添加后数组的长度
    
  • slice():按照条件查找出其中的部分元素

    /** 
     * 1.如果只传一个参数,则返回指定位置开始到数组末尾所有的元素
     * 2.如果传入两个参数,则返回起始位置和结束位置之间所有的元素,注:不包含结束位置
     * 3.当参数为负数
     *   (1) 以数组最后一个元素下标为0,向左依次为-1,-2....
     *   (2) 或将负数加上该数组长度的值来替换该位置的数字
     * 4.如果符号一致则应该遵循起始位置的下标小于结束位置的下标
     */
    const arr = [1,2,3,4,5,6,7]
    
    const arr1 = arr.slice(1) 
    console.log(arr1); // [ 2, 3, 4, 5, 6, 7 ]
    
    const arr2 = arr.slice(1,5)
    console.log(arr2); // [ 2, 3, 4, 5 ]
    
    const arr3 = arr.slice(1,-3)
    console.log(arr3); // [ 2, 3, 4 ]
    
    const arr4 = arr.slice(-5,5)
    console.log(arr4); // [ 3, 4, 5 ]
    
    const arr5 = arr.slice(-1,-3)
    console.log(arr5); // []
    
    const arr6 = arr.slice(-3,-1)
    console.log(arr6); // [5,6]
    
  • splice():对数组进行增删改

    // 只传一个参数: 从指定位置开始,删除后面所有的元素,并返回删除的元素
    const arr = [1,2,3,4,5,6,7]
    const arr1 = arr.splice(1)
    console.log(arr); // [ 1 ]
    console.log(arr1); // [ 2, 3, 4, 5, 6, 7 ]
    
    //如果只传一个参数(index)并且为负数则删除数组最后的-index个元素,并返回删除的元素
    const arr = [1,2,3,4,5,6,7]
    const arr1 = arr.splice(-3)
    console.log(arr); // [ 1, 2, 3, 4 ]
    console.log(arr); // [ 5, 6, 7 ]
    
    // 传两个参数:splice(start,deleteCount),从指定位置开始,删除指定数量的元素,并返回删除的元素
    const arr = [1,2,3,4,5,6,7]
    const arr1 = arr.splice(0,3)
    console.log(arr); // [ 4, 5, 6, 7 ]
    console.log(arr1); // [ 1, 2, 3 ]
    
    /**
     * 传入三个及以上的参数:splice(start,deleteCount,item1,...,itemN)
     * 1.start > 0
     *  (1) deleteCount = 0 : 在start位置前添加元素item,...,itemN
     *  (2) deleteCount > 0 : 在start位置前添加item,...,itemN,在start位置删除deleteCount个元素
     * 2.start > 0
     *  (1) deleteCount = 0 : 在start+arr.length位置前添加item,...,itemN
     *  (2) deleteCount > 0 : 在start+arr.length位置前添加item,...,itemN,在start+arr.length位置删除deleteCount个元素
     */
    // 1.1
    const arr = [1, 2, 3, 4, 5, 6, 7];
    const arr1 = arr.splice(2, 0, 8, 9); // arr[2]为3,在3前添加8,9
    console.log(arr); // [1, 2, 8, 9, 3, 4, 5, 6, 7];
    console.log(arr1); // []
    // 1.2
    const arr = [1, 2, 3, 4, 5, 6, 7];
    const arr1 = arr.splice(2, 2, 8, 9); // arr[2]为3,在3前添加8,9,从3开始删除2个元素
    console.log(arr); // [1, 2, 8, 9, 5, 6, 7];
    console.log(arr1); // [3,4]
    
    //2.1
    const arr = [1, 2, 3, 4, 5, 6, 7];
    const arr1 = arr.splice(-2, 0, 8, 9); // 数组长度为7,-2+7=5 ,arr[5]为6,在6前添加8,9
    console.log(arr); // [1, 2, 3, 4, 5, 8, 9, 6, 7];
    console.log(arr1); // []
    //2.2
    const arr = [1, 2, 3, 4, 5, 6, 7];
    // 数组长度为7,-2+7=5 ,arr[5]为6,在6前添加8,9,从6开始删除后两个元素,并返回删除的元素
    const arr1 = arr.splice(-2, 2, 8, 9); 
    console.log(arr); // [1, 2, 3, 4, 5, 8, 9];
    console.log(arr1); // [6,7]
    
  • fill(): 方法能使用特定值填充数组中的一个或多个元素

    /**
     * fill(value,start,end)
     * value:填充元素
     * start:起始位置
     * end:结束位置(不包括)
     * 会改变原数组
     */
    
    const arr = [1,2,3,4,5]
    arr.fill(1) 
    console.log(arr);//[ 1, 1, 1, 1, 1 ]
    
    arr.fill(2,2)
    console.log(arr); // [ 1, 1, 2, 2, 2 ]
    
    arr.fill(0,1,3)
    console.log(arr); // [ 1, 0, 0, 2, 2 ]
    
    
  • filter():“过滤”功能

    //返回新数组,不会改变原数组
    const arr = [1,2,3,4,5]
    const arr1 = arr.filter((item)=>{
      return item % 2 ===0
    })
    console.log(arr); // [ 1, 2, 3, 4, 5 ]
    console.log(arr1); // [ 2, 4 ]
    
  • concat():拼接数组

    //不会改变原数组
    const arr1 = [1,2,3,4]
    const arr2 = arr1.concat([5,6,7,8])
    console.log(arr2); //[1,2,3,4,5,6,7,8]
    console.log(arr1); //[1,2,3,4]
    
  • indexOf():检测当前值在数组中第一次出现的位置索引

    /** 
     * arr.indexOf(searchElement,fromIndex?)
     * searchElement:要查找的元素
     * fromIndex:查找起点位置的的索引(可选) 
     */ 
    const arr = [2,4,6,6,4,2,1,7,3];
    console.log(arr.indexOf(4)); // 1
    //从arr[2]开始查找元素4第一次出现的位置,
    console.log(arr.indexOf(4,2)); // 4
    //如果没有找到则返回-1
    console.log(arr.indexOf(9)); // -1
    
  • lastIndexOf():检测当前值在数组中最后一次出现的位置索引

    /** 
     * arr.lastIndexOf(searchElement,fromIndex?)
     * searchElement:要查找的元素
     * fromIndex:查找起点位置的的索引(可选) 
     */ 
    const arr = [2,4,6,6,4,2,1,7,3];
    console.log(arr.lastIndexOf(4)); // 4
    //从arr[2]开始查找元素4最后一次出现的位置,
    console.log(arr.lastIndexOf(4,2)); // 1
    //如果没有找到则返回-1
    console.log(arr.lastIndexOf(9)); // -1
    
  • every():判断数组中每一项是否满足条件

    const arr = [1,2,3,4,5]
    const result1 = arr.every((item) => {
        return item<10
    })
    console.log(result1); // true
    
    const result2 = arr.every((item) => {
        return item > 2
    })
    console.log(result2); // false
    
  • some():判断数组中是否存在满足条件的项

    const arr = [1,2,3,4,5]
    const result1 = arr.some((item) => {
        return item<1
    })
    console.log(result1); // false
    
    const result2 = arr.some((item) => {
        return item > 2
    })
    console.log(result2); // true
    
  • includes():判断一个数组是否包含一个指定的值

    /**
     * includes(searchElement,startIndex)
     * searchElement:要查找的元素
     * start:开始的索引(可选)
     */
    const arr = [1,2,3,4,5]
    const result1 = arr.includes(2)
    console.log(result1); // true
    const result2 = arr.includes(2,2)
    console.log(result2); // false
    
  • sort():对数组的元素进行排序

    //默认按字母升序排序 
    const arr = ['a','d','b','c']
    console.log(arr.sort()); //['a','b','c','d']
    const arr1 = [1,10,7,3]
    console.log(arr1.sort()); //[1,10,7,3]
    //可以传入一个函数改变排序方式例如
    function compare(value1,value2){
        if(value1 < value2) return -1
        else if (value1 > value2) return 1
        else return 0
    }
    console.log(arr1.sort(compare)); //[1,3,7,10]
    
  • reverse():颠倒数组元素

    const arr = ['a','b','c','d']
    console.log(arr.reverse()); // ['d','c','b','a']
    
  • forEach():ES5 及以下循环遍历数组每一项

    // 无法终止循环
    const arr = [1,2,3,4,5]
    arr.forEach((item,index,arr) => {
      console.log("遍历的数组为:",arr+"; 当前的内容为:",item+" 当前的下标为:",index);
    })
    // 遍历的数组为: 1,2,3,4,5; 当前的内容为: 1 当前的下标为: 0
    // 遍历的数组为: 1,2,3,4,5; 当前的内容为: 2 当前的下标为: 1
    // 遍历的数组为: 1,2,3,4,5; 当前的内容为: 3 当前的下标为: 2
    // 遍历的数组为: 1,2,3,4,5; 当前的内容为: 4 当前的下标为: 3
    // 遍历的数组为: 1,2,3,4,5; 当前的内容为: 5 当前的下标为: 4
    
  • map():ES6 循环遍历数组每一项

    //返回一个新数组,不会改变原数组
    const arr = [1,2,3,4,5]
    const arr1 = arr.map((item) => {
      return item*2
    })
    console.log(arr); // [ 1, 2, 3, 4, 5 ]
    console.log(arr1); // [ 2, 4, 6, 8, 10 ]
    
  • find():返回匹配的值

    //第一次返回true时停止查找
    let arr = [1, 2, 3,  arr , 5, 1, 9];
    
    console.log(arr.find((value, keys, arr) => {
        return value > 2;
    })); // 3 返回匹配的值
    
  • findIndex():返回匹配位置的索引

    //第一次返回true时停止查找
    let arr = [1, 2, 3,  arr , 5, 1, 9];
    
    console.log(arr.findIndex((value, keys, arr) => {
        return value > 2;
    })); // 2 返回匹配位置的索引
    

//第一次返回true时停止查找
let arr = [1, 2, 3, arr , 5, 1, 9];

console.log(arr.find((value, keys, arr) => {
return value > 2;
})); // 3 返回匹配的值


- findIndex():返回匹配位置的索引

```js
//第一次返回true时停止查找
let arr = [1, 2, 3,  arr , 5, 1, 9];

console.log(arr.findIndex((value, keys, arr) => {
    return value > 2;
})); // 2 返回匹配位置的索引
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值