Array.from({length: 5})和Array(5).fill(undefined)都可以用来创建一个长度为5的数组,但是有一些细微的区别。
Array.from({length: 5})使用了Array.from方法,它接受一个可迭代对象作为参数,并返回一个新的数组。在这种情况下,{length: 5}是一个可迭代对象,它表示一个具有长度为5的空数组。Array.from({length: 5})会将这个可迭代对象转换为一个真正的数组,其中的元素都是undefined。
const arr1 = Array.from({length: 5});
console.log(arr1); // [undefined, undefined, undefined, undefined, undefined]
而Array(5).fill(undefined)是使用了Array的构造函数和fill方法。Array(5)创建了一个具有长度为5的空数组,然后使用fill方法将所有的元素都填充为undefined。
const arr2 = Array(5).fill(undefined);
console.log(arr2); // [undefined, undefined, undefined, undefined, undefined]
所以,对于创建一个长度为n的空数组来说,Array.from({length: n})和Array(n).fill(undefined)是等价的。但是,Array.from方法可以接受一个可迭代对象作为参数,所以它也可以用来将其他可迭代对象(比如字符串、Set、Map等)转换为数组。而Array的构造函数和fill方法只能用于创建指定长度且元素都相同的数组。