Array的静态方法

77 阅读1分钟

一、Array.from()

将一个可迭代对象转换为数组

从string生成数组:

      console.log(Array.from('abc')) // ['a', 'b', 'c']

从set生成数组:

      console.log(Array.from(new Set(['a', 'b', 'c']))) // ['a', 'b', 'c']

从map生成数组:

      const list = [
        [1, 'a'],
        [2, 'b']
      ]
      console.log(Array.from(new Map(list))) // [[1, 'a'], [2, 'b'],]

从arguments生成数组:

      function fn() {
        console.log(Array.from(arguments))
      }

      fn('a', 'b', 'c') // ['a', 'b', 'c']

Array.from(obj, mapFn)相当于Array.from(obj).map(mapFn):

      const arr = Array.from('123', (n) => n * 10)

      console.log(arr) // [10, 20, 30]

使用Array.from填充数组

二、Array.isArray()

判断一个值是不是数组

      console.log(Array.isArray([])) // true
      console.log(Array.isArray(new Array())) // true
      console.log(Array.isArray(Array.prototype)) // true
      console.log(Array.isArray()) // false
      console.log(Array.isArray({})) // false
      console.log(Array.isArray(null)) // false

三、Array.of()

用于将一组值转换为数组

构造函数Array参数个数的不同,会导致Array()的行为有差异:

      console.log(Array()) // []
      console.log(Array(3)) // [empty × 3]
      console.log(Array(1, 2, 3)) // [1, 2, 3]
      console.log(new Array()) // []
      console.log(new Array(3)) // [empty × 3]
      console.log(new Array(1, 2, 3)) // [1, 2, 3]
  1. 当参数个数为0时,创建一个空数组
  2. 当参数个数为1时,这个参数是数组的长度
  3. 当参数个数>=2时,返回参数组成的新数组

Array.of()就是用来替代Array()/new Array()的,它的行为非常统一:

      console.log(Array.of()) // []
      console.log(Array.of(3)) // [3]
      console.log(Array.of(1, 2, 3)) // [1, 2, 3]