2020-03-10

ES5新增数组方法:

  Array.isArray()

    Array.isArray方法返回一个布尔值,表示参数是否为数组。它可以弥补typeof运算符的不足。

      eg:var arr = [1, 2, 3];

          typeof arr    // "object"

          Array.isArray(arr)  // true

        上面代码中,typeof运算符只能显示数组的类型是Object,而Array.isArray方法可以识别数组。

  forEach()---注:该方法仅支持iE8以上浏览器

    -forEach()方法需要一个函数作为参数

      -不返回值,只操作数据

      -像这种函数,由我们创建但是不由我们调用的,我们称为回调函数

      -数组中有几个元素函数就执行几次,每次执行时,浏览器会将遍历到的元素以实参的形式传递进来,我们可以定义形参,来读取这些内容

      -浏览器会在回调函数中传递三个参数:

        第一个参数,就是当前正在遍历的元素(value)

        第二个参数,就是当前正在遍历的元素的索引/下标(index)

        第三个参数,就是正在遍历的数组(obj)


  map()

    -map方法和forEach方法很相似,但是map方法有返回值,遍历当前数组,并且将当前数组中的元素返回给新数组,不适用

    return时,新数组长度与原数组相同,但每个元素都是undefined

      eg:[1, 2, 3].map(function(elem, index, arr) {

          return elem * index;

        });

        // [0, 2, 6]

  filter()

    -filter方法用于过滤组成员,满足条件的成员组成一个新数组返回

    -它的参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回,该方法不会改变原数组

    -filter方法的参数函数可以接受三个参数:当前成员,当前位置和整个数组。(同forEach、map)

      eg:

          var res = [1, 2, 3, 4, 5].filter(function (elem, index, arr) {

            return index % 2 === 0;

          });

          res// [1, 3, 5]

  find()

    -find 参数是一个函数,函数的返回值是查找条件,返回值是找到的对象,找不到返回undefined

    -与filter不同的是:filter返回的是数组,find返回的是对象

    -返回找到的第一个符合条件的对象并返回

  reduce()

    -reduce方法从左到右(从第一个成员到最后一个成员)依次处理数组的每个成员,最终累计为一个值。

    -reduce方法参数是一个函数,该函数接受一下两个参数。

      第一个参数:积累变量,默认为数组的第一个成员

      第二个参数:当前变量,默认为数组的第二个成员

      eg:

        var res = [1, 2, 3, 4, 5].reduce(function (a, b) {

          console.log(a, b);

          return a + b;

        })

        // 1 2      第一次执行,a是数组的第一个成员1,b是数组的第二个成员2。

        // 3 3      第二次执行,a为上一轮的返回值3,b为第三个成员3。

        // 6 4      第三次执行,a为上一轮的返回值6,b为第四个成员4。

        // 10 5    第四次执行,a为上一轮返回值10,b为第五个成员5。

                    至此所有成员遍历完成,整个方法的返回值就是最后一轮的返回值15。

        res//最后结果:15

  indexOf()

    -indexOf方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。

      eg:

        var a = ['a', 'b', 'c'];

        a.indexOf('b') // 1

        a.indexOf('y') // -1

    -indexOf方法还可以接受第二个参数,表示搜索的开始位置。

      eg:

        ['a', 'b', 'c'].indexOf('a', 1) // -1

        注:上面代码从1号位置开始搜索字符a,结果为-1,表示没有搜索到。

  lastIndexOf()

    -lastIndexOf方法返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1。

      eg:

        var a = [2, 5, 9, 2];

        a.lastIndexOf(2) // 3

        a.lastIndexOf(7) // -1

  注:这两个方法不能用来搜索NaN的位置,即它们无法确定数组成员是否包含NaN。

      [NaN].indexOf(NaN) // -1

      [NaN].lastIndexOf(NaN) // -1

      这是因为这两个方法内部,使用严格相等运算符(===)进行比较,而NaN是唯一一个不等于自身的值

  some()

    - 判断数组中所有元素是否有满足条件的,如果遇到一次满足则不再继续判断,直接返回true,否则返回false

    注:可以查找对象型数组中是否有符合条件的

  every()

    - 判断数组中的每一个元素是否满足条件,如果全部满足,就返回true,否则返回false

ES6的方法

  Array.from()

    -将类数组转换为数组

  注:低版本浏览器用  Array.prototype.slice.call()

你可能感兴趣的:(2020-03-10)