作者简介:一名大四的学生,致力学习前端开发技术
⭐️个人主页:夜宵饽饽的主页
❔ 系列专栏:JavaScript小贴士
学习格言:成功不是终点,失败也并非末日,最重要的是继续前进的勇气
前言:
本文是关于Array.from方法和Array.of方法的运用,这是一种创建数组和类型转化成数组的方法,希望可以帮助到大家,欢迎大家的补充和纠正
Array.from方法用于将两类对象转为真正的数组
Array.from 还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组
Array.from(arrayLike,x=>x*x)
//等同于
Array.from(arrayLike).map(x => x*x)
⭐️ Array和扩展运算符的区别
先解释何为类似数组对象的:本质特征只有一点,即必须有 length属性
扩展运算符: 其背后调用的是遍历器接口(Symbo.iterator),如果一个对象没有部署该接口,就无法转换
Array.from(): 其是支持类似数组对象,任何有length对象,都可以通过Array.from方法转换为数组,扩展运算符是无法转换这种情况的
Array.from({ length:3 })
//[undefined,undefined,undefined]
//传入字符串
let str='foo'
let ex1=Array.from(str)
console.log(ex1)
//传入Set类型的
const set=new Set(['foo','bar','baz','foo'])
let ex2=Array.from(set)
console.log(ex2)
//传入Mao类型
const mapper=new Map([
[1,2],
[2,4],
[4,8]
])
let ex3=Array.from(mapper)
console.log(ex3)
//传入类数组对象
function f(){
return Array.from(arguments)
}
let ex4=f(1,2,3)
console.log(ex4)
描述: 将一组值转为数组
Array.of(3,2,6) //[3,2,6]
使用细节:
这个方法主要是用于弥补数组构造函数Array()的不足,因为参数个数不同会导致Array()的行为差异
Array(3) //[, , ,]
Array(3,11,8) //[3,11,8]
Array只有当参数个数不少于2个时,Array()才会返回有参数组成的新数组
Array.of 基本上可以用来替代Array()或 new Array()
下面推荐的两篇文章可以补充和扩展文章中涉及的知识点