一、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.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]
- 当参数个数为0时,创建一个空数组
- 当参数个数为1时,这个参数是数组的长度
- 当参数个数>=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]