方法列表
from
Array.from
方法对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
Array.from
可以通过以下方式来创建数组对象:
- 伪数组对象(拥有一个
length
属性和若干索引属性的任意对象,如push
slice
splice
) - 可迭代对象(可以获取对象中的元素,如
Map
和Set
等,也可以理解成带有[Symbol.iterator]
对象)
参数说明
from (
arrayLike: string | 伪数组对象 | 可迭代对象,
mapFn: function,
thisArg: ThisType,
) return // 一个新的数组实例
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
arrayLike | 是 | string | 伪数组对象 | 可迭代对象 | 需要转换成数组的对象 |
mapFn | 否 | funciton | 新数组中的每个元素会执行该回调函数 |
thisArg | 否 | ThisType | 执行回调函数 mapFn 时 this 对象 |
示例
// 从 String 生成数组
Array.from('foo') // [ "f", "o", "o" ]
// 从 Set 生成数组
const set = new Set(['foo', 'bar', 'baz', 'foo'])
Array.from(set) // [ "foo", "bar", "baz" ]
// 从 Map 生成数组
const map = new Map([[1, 2], [2, 4], [4, 8]])
Array.from(map) // [[1, 2], [2, 4], [4, 8]]
const mapper = new Map([['1', 'a'], ['2', 'b']])
Array.from(mapper.values()) // ['a', 'b']
Array.from(mapper.keys()) // ['1', '2']
// 从类数组对象(arguments)生成数组
function f() {
return Array.from(arguments)
}
f(1, 2, 3) // [ 1, 2, 3 ]
巧用
当我们想要创建一个指定长度并且根据索引值来生成数组数据时
const arr = Array.from(
{ length: 10 },
(_, index) => `我是第${index}项`, // 这里对应数组中的 map 函数
)
console.log(arr)
/**
* [
* "我是第0项",
* "我是第1项",
* "我是第2项",
* "我是第3项",
* "我是第4项",
* "我是第5项",
* "我是第6项",
* "我是第7项",
* "我是第8项",
* "我是第9项",
* ]
*/
isArray
Array.isArray
用于确定传递的值是否是一个 Array
如果对象是 Array
,则返回 true
,否则为 false
。
参数说明
isArray (
obj: any
) return boolean
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
obj | 是 | any | 需要检测的值 |
示例
// 下面的函数调用都返回 true
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
Array.isArray(new Array('a', 'b', 'c', 'd'))
// 鲜为人知的事实:其实 Array.prototype 也是一个数组。
Array.isArray(Array.prototype);
// 下面的函数调用都返回 false
Array.isArray();
Array.isArray({});
Array.isArray(null);
Array.isArray(undefined);
Array.isArray(17);
Array.isArray('Array');
Array.isArray(true);
Array.isArray(false);
Array.isArray(new Uint8Array(32))
Array.isArray({ __proto__: Array.prototype });
of
Array.of
方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
Array.of
和 Array
构造函数之间的区别在于处理整数参数:Array.of(7)
创建一个具有单个元素 7 的数组,而 Array(7)
创建一个长度为 7 的空数组(注意:这是指一个有 7 个空位 empty
的数组,而不是由 7 个undefined
组成的数组)。
参数说明
of (
...args: any
) return // 新的 Array 实例。
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
…args | 是 | any | 任意个参数,将按顺序成为返回数组中的元素 |
示例
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]