码迷,mamicode.com
首页 > 编程语言 > 详细

JS中数组的方法

时间:2019-08-30 23:12:08      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:检测   方法   回调函数   new   遍历数组   的区别   es5   map   用法   

在js中数组的重要性不言而喻,下面就来介绍一些数组的常用方法

一、基本方法

  1.增

  ①.  arr.push()

    在数组的末尾添加一个元素。

 

    var arr = [1,2,3,4];
    var newArr = arr.push(8);
    console.log(arr);  //(5) [1, 2, 3, 4, 8]

 

    该方法会改变原数组,在数组的最后一位直接插入一个元素,增加数组的长度。

  ②   arr.unshift()

    在数组的第一位添加一个元素。

var arr = [1,2,3,4]
    arr.unshift("l")
    console.log(arr)  //(5) ["l", 1, 2, 3, 4]

    该方法也会改变原数组,在数组的第一位添加一个元素,增加数组的长度。

  2、删

  ①   arr.pop()

    删除数组的最后一位元素。

var arr = [1,2,3,4];
    arr.pop();
    console.log(arr);  //(3) [1, 2, 3]

    该方法同样会改变原数组。

  ②   arr.shift()

    删除数组的第一位元素。

var arr = [1,2,3,4];
    arr.shift();
    console.log(arr);  //(3) [2, 3, 4]

    该方法也会改变原数组。

  ③   arr.splice(n,m,a)

    表示从第从索引为n开始删除,一共删除m个;a可选,表示在删除的地方添加一个新的元素a。

var arr = [1,2,3,4];
    var newArr = arr.splice(1,2);
    console.log(newArr);  //(2) [2, 3]
    console.log(arr);  //(2) [1, 4]

    该方法也一样会改变数组。

  ④   arr.slice(n.m)

    表示从索引为n的元素开始截取,截取到下标为m的前一个返回一个新的数组并没有改变原数组

var arr = [1,2,3,4];
    var arr2 = arr.slice(1,3);
    console.log(arr2);  //(2) [2, 3]
    console.log(arr);  //(4) [1, 2, 3, 4]

    Tip:这里要注意和arr.splice()方法的区别,不要混淆。

 

二、ES5中新增的数组的方法

1、arr.indexOf()

  arr.indexOf(data,start)有两个参数,第二个参数可选,表示的是从索引为start开始检测;该方法可以用来检测数组中是否含有某个元素,返回值为该元素在数组中的索引,当数组中不包含该元素的时候,返回值为-1;因此该方法也可以用来检测数组中是否含有某个元素;

var arr = [1,2,3,4];
var res = arr.indexOf("a");
console.log(res);  //返回值为-1;

  补充一个arr.lastIndexOf(),用法同arr.indexOf(),但是arr.lastIndexOf()是从后开始向前检索。

2、forEach(callback)

  该方法可以用来循环遍历数组;参数为回调函数。下面先来看一下结构。

var arr = [‘a‘,‘b‘,‘c‘,‘d‘];
arr.forEach(function(e,i,arr){
  console.log(e);
})
  // "a"  "b"  "c"  "d"

arr.forEach(function(e,i,arr){
  console.log(i);
})
  // 0,1,2,3

arr.forEach(function(e,i,arr){
  console.log(arr);
})
  // [‘a‘,‘b‘,‘c‘,‘d‘]
  // [‘a‘,‘b‘,‘c‘,‘d‘]
  // [‘a‘,‘b‘,‘c‘,‘d‘]
  // [‘a‘,‘b‘,‘c‘,‘d‘]

  通过上面的代码可以看出,arr.forEach()要接受一个回调函数,该函数有三个参数,这里的e表示元素,i表示索引,arr表示的是数组。

  为了方便理解,下面通过一个案例来看一下for.Each()的用法。

var arr = [-1,-2,32,15,-8];
var arrNew = [];
arr.forEach(function(e,i,arr){
  e < 0 ? e = -e : e;
  arrNew.push(e);
})
console.log(arrNew)    // [1, 2, 32, 15, 8]

3、arr.map(callback)

  该方法同for.Each()一样也可以对数组进行遍历,用法也和for.Each()一样,在这里就不做过多的介绍;

  arr.map()方法不仅可以遍历数组,还可以对数组进行计算;

var arr = [1,2,3,4];
        var newArr = arr.map(function(e,index,arr){
            return e-1;
        })
        console.log(newArr);
        // [0, 1, 2, 3]

4、arr.filter(callback)

  过滤数组,也可以遍历数组;

var arr = [1,2,3,4];
var newArr = arr.filter(function(e,index,arr){
     return e > 2;
})
console.log(newArr);
 // [3, 4]

  如上代码,可以使用该方法将数组中的值小于2的值过滤掉,返回一个新的符合回调函数内条件的数组。

5、arr.evey(callback)

  使用该方法,如果数组中的每一个元素都符合回调函数内的条件,则返回true,否则返回false;

//效果是我们判定这个数组全是正数 使用.every
var arr = [1,58,125,-12,458,12];
var Boon = arr.every(function(e,i,arr){
  return e > 0;
})
console.log(Boon)      //false

6、arr.some(callback)

  该方法和every有点类似,只不过当数组中又至少一个符合条件的时候都返回true,当全部都不符合的时候,才返回false;

//效果是我们判定这个数组是否有一个负数 使用.some
var arr = [1,58,125,-12,458,12];
var Boon = arr.some(function(e,i,arr){
  return e < 0;
})
console.log(Boon)      // ture

7、arr.reduce(callback)

  这个方法比较复杂,我们来看一个例子 

  代码如下:

     var arr1 = [1,7,5,7,1,3];
        var arr2 = arr1.reduce(function(prev,cur,index,arr){
            console.log(prev);
            return prev + cur;
        });
        console.log("结果为" + arr2);
        // 1
        // 8
        // 13
        // 20
        // 21
        // 结果为24

  具体看这个代码,首先我们在传入reduce的函数中打印了prev值,可以看到prev就是数组每两项的和。比如第一个是1,第二个就是1+7 = 8,以此类推。

最后,我们把结果返回。这是没设置第二个参数的情况。

  下面我们来看看设置了第二个参数为2的例子。

     var arr1 = [1,7,5,7,1,3];
        var arr2 = arr1.reduce(function(prev,cur,index,arr){
            console.log(prev);
            return prev + cur;
        },2);
        console.log("结果为" + arr2);
        // 2
        // 3
        // 10
        // 15
        // 22 
        // 23
        // 结果为26

  我们可以看出,当设置了第二个参数。我们第一个prev输出的结果就是第二个参数的值。设置了这个参数,会多执行一次

  利用这种方法,我们可以快速的把二维数组转化为一维数组。

        var arr1 = [
            [1,2],
            [3,4],
            [5,6]
        ]
        var arr2 = arr1.reduce(function(prev,cur,index,arr){
            return prev.concat(cur);
        });
        console.log(arr2)  //[1, 2, 3, 4, 5, 6]       

  看到这里相信arr.reduceRight()的用法你也应该会了吧,和arr.reduce()类似,只不过是从右向左而已,在这里就不详细的介绍啦。

  

 

JS中数组的方法

标签:检测   方法   回调函数   new   遍历数组   的区别   es5   map   用法   

原文地址:https://www.cnblogs.com/mengshou/p/11432528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!