• 静态方法
    Array.isArray():返回一个布尔值,用来判断参数是否为一个数组。
    var arr = [1, 2, 3];
    typeof arr // "object"
    Array.isArray(arr) // true
  • 实例方法
    • valueOf()
      var arr = [1, 2, 3];
      arr.valueOf() // [1, 2, 3]
    • toString()
      var arr = [1, 2, 3];
      arr.toString() // "1,2,3"
      var arr = [1, 2, 3, [4, 5, 6]];
      arr.toString() // "1,2,3,4,5,6"
    • push()和pop():后进先出(stack:栈),数组尾部操作,改变原数组
      • push(value):返回值是数组变更后的长度
      • pop():返回被pop出来的元素。
    • shift()和unshift():先进先出(queue:队列),数组头部操作,改变原数组
      • shift():返回被删除的元素。
      • unshift(values):返回值是数组变更后的长度
    • join():接收指定参数作为分隔符,默认为逗号,原数组不变
      • 当值为undefined或null时,自动转成空字符串
    • concat():合并数组或对象,得到新的数组,数组尾部添加,原数组不变
      var x =[].concat({a: 1}, {b: 2})
      x// [{ a: 1 }, { b: 2 }]
      也可以视为浅拷贝
    • reverse():颠倒数组,返回改变后的数组,改变原数组
    • slice(start, end):截取数组的一部分,返回新数组,原数组不变
      var a = ['a', 'b', 'c'];
      a.slice(0) // ["a", "b", "c"]
      a.slice(-2) // ["b", "c"]
      a.slice(-2, -1) // ["b"]
      a.slice(4) // []
      a.slice(2, 1) // []
    • splice(start, count, addElement1, addElement2, ...):删除或添加数组的一部分,返回被删除的元素或空,改变原数组
      正常使用
      var x = ['a', 'b', 'c', 'd', 'e', 'f'];
      x.splice(4, 2) // ["e", "f"]
      x // ["a", "b", "c", "d"]
      指定位置删除并添加新元素
      var y = ['a', 'b', 'c', 'd', 'e', 'f'];
      y.splice(4, 2, 1, 2) // ["e", "f"]
      y // ["a", "b", "c", "d", 1, 2]
      参数为负数
      var a = ['a', 'b', 'c', 'd', 'e', 'f'];
      a.splice(-4, 2) // ["c", "d"]
      单纯添加新元素
      var a = [1, 1, 1];
      a.splice(1, 0, 2) // []
      a // [1, 2, 1, 1]
      拆分数组
      var a = [1, 2, 3, 4];
      var b = a.splice(2) // [3, 4]
      a // [1, 2]
      b // [3,4]
    • sort():将数组成员按照字典顺序(将数组成员转化为字符串形式)排序,改变原数组
      参数传一个函数以自定义排序
      [1, 4, 2, 6, 0, 6, 2, 6].sort((a, b) => a - b)
    • map():将所有数组成员一次传入回调函数执行并组成一个数组返回,原数组不变
      • 传入一个回调函数作为参数
        回调函数的参数为(item,index,arr)
        [1, 2, 3].map(function(item, index, arr) {
        return item * index;
        });
        // [0, 2, 6]
      • 传入第二个参数给回调函数绑定this对象
        var arr = ['a', 'b', 'c'];
        [1, 2].map(function (e) {
        return this[e];
        }, arr)
        // ['b', 'c']
      • 数组有空位会跳过,而null和undefined不会被跳过
        var f = function (n) { return 'a' };
        [1, undefined, 2].map(f) // ["a", "a", "a"]
        [1, null, 2].map(f) // ["a", "a", "a"]
        [1, , 2].map(f) // ["a", , "a"]
    • forEach():对数据进行操作,无法终止,返回值undefined,需要得到返回值用map(),用法与map类似。原数组不变
      • 传入一个回调函数作为参数
        log(element, index, array) {
        console.log('[' + index + '] = ' + element);
        }
        [2, 5, 9].forEach(log);
        // [0] = 2
        // [1] = 5
        // [2] = 9
        // undefined
        • 传入第二个参数为回调函数绑定this对象
          var out = [];
          [1, 2, 3].forEach(function(elem) {
          this.push(elem * elem);
          }, out);
          out // [1, 4, 9]
      • 数组有空位时结果与map同
    • filter():过滤数组成员,满足结果的成员组成数组作为返回值,原数组不变
      • 传入一个回调函数作为参数
        [1, 2, 3, 4, 5].filter(function (elem, index, arr) {
        return index % 2 === 0;
        });
        // [1, 3, 5]
      • 传入第二个参数绑定回调函数的this对象
    • reduce():过于强大,具体见=>你不知道的25个reduce高级用法 https://juejin.im/post/6844904063729926152
    • indexOf()和lastIndexOf()
      • indexOf(value)返回value第一次出现的位置的下标,没有返回-1
        接收第二个参数,表示开始搜索参数的位置
        ['a', 'b', 'c'].indexOf('a', 1) // -1
      • lastIndexOf(value)返回value最后一次出现的位置的下标,没有返回-1

图片说明