如何使用Array构造函数创建仅含单个数字元素的数组
Array 构造函数的行为存在重载逻辑,这是你遇到问题的核心原因:
- 当你传入单个正整数类型的参数时,构造函数会把该参数作为数组的
length属性,返回对应长度的空槽数组,也就是你遇到的new Array(4)返回长度为4的空数组的情况 - 当传入参数数量大于等于2,或是单个参数不是正整数类型时,构造函数就会把所有传入的参数直接作为数组的元素返回
你可以用下面几种方法实现需求:
方案1:用ES6新增的Array.of()(最简便)
这个方法就是为了解决Array构造函数的参数歧义问题设计的,无论传入多少个参数、参数是什么类型,都会直接把参数作为数组元素返回:
const arr = Array.of(4); // 得到 [4]
方案2:兼容旧环境的原生构造函数写法
如果你需要适配不支持ES6的运行环境,可以用以下两种方式实现:
- 方式1:创建长度为1的数组后填充值
const arr = new Array(1).fill(4); // 得到 [4]
- 方式2:先创建空数组再手动赋值
const arr = new Array(); arr[0] = 4; // 得到 [4]
内容的提问来源于stack exchange,提问作者aryan singh
相关产品推荐
相关产品推荐

