Array.from允许在JavaScript集合(如:数组、类数组、对象、字符串、map、set等可迭代对象)上进行有用的转换

arrayLike就是Array.from遍历的对象,mapFn就类似map和forEach的回调,参数是一样的
Array.from([1,2,3,4], (item,index) => {// 元素和下标console.log(item, index)return item+1})
1、填充数组
基本类型
需求:创建一个数组长度为10,用6填满
// 可以用Array.fromfunction createArrayByFrom(length, fill) {return Array.from({length: length}, () => fill)}// 也可以用Array.fillfunction createArrayByFill(length, fill) {return Array(length).fill(fill)}
引用类型
需求:创建一个数组长度为3,用空对象填满
const length = 3;const resultA = Array.from({ length: length }, () => ({}));const resultB = Array(length).fill({});resultA; // => [{}, {}, {}]resultB; // => [{}, {}, {}]resultA[0] === resultA[1]; // => falseresultB[0] === resultB[1]; // => true
这里我们发现了问题,用fill填充空对象时实际上是一个对象,fill就拿的同一个对象复制下来的。而Array.from则是每次在第二个回调函数里返回一个新的对象。
二维数组
需求:创建一个10*10的二维数组结构,并且内容从1-100递增展示
let arr =Array.from({ length: 10 }, (_, y) =>Array.from({ length: 10 },(_, x) => x + 1 + y * 10,))
