Array.from() 用于将类数组对象或可迭代对象转化为一个新的浅拷贝数组实例。
let arr = Array.from({length:3},(_,i)=>({id:`item-${i+1}`}))
console.log(arr)
Array.from()转换数组
// Array.from 转换成数组
let arr2 = Array.from('chixinAwen')
console.log(arr2)
示例:重复字符串
一个类数组对象必须含有 length
属性,且元素属性名必须是数值或者可转换为数值的字符。我们正好可以利用这一点。
我们将 length
属性设置为 3,使用 from()
方法初始化数组,每个位置对应 1 个 undefined
。 如下:
Array.from({ length: 3 }) // [undefined, undefined, undefined]
现在我们使用第二个参数,这是一个 map
函数,它将调用数组的每个元素。在这里,我们用 'Nice'
替换所有的 undefined
。
Array.from({ length: 3 }, () => 'Nice') // ['Nice', 'Nice', 'Nice']
最后我们调用 join()
方法将数组中的所有元素组合成一个字符串。
Array.from({ length: 3 }, () => 'Nice').join('') //'NiceNiceNice'
分块
在使用 API 时,我经常需要将用户列表分块并批量发送。
Array.from()
是一种将数组分块的好方法,因为第二个参数是一个map
函数。
function chunkify(array, chunkSize = 10) {
const chunks = Array.from(
{ length: Math.ceil(array.length / 10) },
(_, i) => {
const start = chunkSize * i
return array.slice(start, start + chunkSize)
}
)
return chunks
}
chunkify(hugeArray) // [[...], [...], ....]