方法列表

from

Array.from 方法对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。

Array.from 可以通过以下方式来创建数组对象:

  • 伪数组对象(拥有一个 length 属性和若干索引属性的任意对象,如 push slice splice
  • 可迭代对象(可以获取对象中的元素,如 MapSet 等,也可以理解成带有 [Symbol.iterator] 对象)

参数说明

  1. from (
  2. arrayLike: string | 伪数组对象 | 可迭代对象,
  3. mapFn: function,
  4. thisArg: ThisType,
  5. ) return // 一个新的数组实例
参数名 是否必填 类型 说明
arrayLike string | 伪数组对象 | 可迭代对象 需要转换成数组的对象
mapFn funciton 新数组中的每个元素会执行该回调函数
thisArg ThisType 执行回调函数 mapFnthis对象

示例

  1. // 从 String 生成数组
  2. Array.from('foo') // [ "f", "o", "o" ]
  3. // 从 Set 生成数组
  4. const set = new Set(['foo', 'bar', 'baz', 'foo'])
  5. Array.from(set) // [ "foo", "bar", "baz" ]
  6. // 从 Map 生成数组
  7. const map = new Map([[1, 2], [2, 4], [4, 8]])
  8. Array.from(map) // [[1, 2], [2, 4], [4, 8]]
  9. const mapper = new Map([['1', 'a'], ['2', 'b']])
  10. Array.from(mapper.values()) // ['a', 'b']
  11. Array.from(mapper.keys()) // ['1', '2']
  12. // 从类数组对象(arguments)生成数组
  13. function f() {
  14. return Array.from(arguments)
  15. }
  16. f(1, 2, 3) // [ 1, 2, 3 ]

巧用

当我们想要创建一个指定长度并且根据索引值来生成数组数据时

  1. const arr = Array.from(
  2. { length: 10 },
  3. (_, index) => `我是第${index}项`, // 这里对应数组中的 map 函数
  4. )
  5. console.log(arr)
  6. /**
  7. * [
  8. * "我是第0项",
  9. * "我是第1项",
  10. * "我是第2项",
  11. * "我是第3项",
  12. * "我是第4项",
  13. * "我是第5项",
  14. * "我是第6项",
  15. * "我是第7项",
  16. * "我是第8项",
  17. * "我是第9项",
  18. * ]
  19. */

isArray

Array.isArray 用于确定传递的值是否是一个 Array

如果对象是 Array,则返回 true,否则为 false

参数说明

  1. isArray (
  2. obj: any
  3. ) return boolean
参数名 是否必填 类型 说明
obj any 需要检测的值

示例

  1. // 下面的函数调用都返回 true
  2. Array.isArray([]);
  3. Array.isArray([1]);
  4. Array.isArray(new Array());
  5. Array.isArray(new Array('a', 'b', 'c', 'd'))
  6. // 鲜为人知的事实:其实 Array.prototype 也是一个数组。
  7. Array.isArray(Array.prototype);
  8. // 下面的函数调用都返回 false
  9. Array.isArray();
  10. Array.isArray({});
  11. Array.isArray(null);
  12. Array.isArray(undefined);
  13. Array.isArray(17);
  14. Array.isArray('Array');
  15. Array.isArray(true);
  16. Array.isArray(false);
  17. Array.isArray(new Uint8Array(32))
  18. Array.isArray({ __proto__: Array.prototype });

of

Array.of 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。

Array.ofArray 构造函数之间的区别在于处理整数参数:Array.of(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个长度为 7 的空数组(注意:这是指一个有 7 个空位 empty 的数组,而不是由 7 个undefined组成的数组)。

参数说明

  1. of (
  2. ...args: any
  3. ) return // 新的 Array 实例。
参数名 是否必填 类型 说明
…args any 任意个参数,将按顺序成为返回数组中的元素

示例

  1. Array.of(1); // [1]
  2. Array.of(1, 2, 3); // [1, 2, 3]
  3. Array.of(undefined); // [undefined]