js 创建 指定长度 指定相同参数 的数组
创始人
2025-05-31 12:14:37
0

请补全JavaScript代码,要求返回一个长度为参数值并且每一项值都为参数值的数组。

注意:请勿直接使用for/while

 const _createArray = (number) => {// 补全代码}

参考文章

我的思路

下意识的想法是 使用Array(number)去创建长度为number的空数组,再用数组的forEachmap方法赋值即可,结果发现该数组不会被遍历,原因是:
forEach方法会按升序为数组中含有效值的每一项执行一次callback函数,而那些已删除(使用delete方法等情况)或未初始化的项将被跳过(但不包括值为undefined的项)
通过Array(number)new Array(number)创建的数组是一个有length属性的空数组,其中的每一项都还未被赋值(初始化),故会被forEachmap等方法跳过

Array(3) // [empty x 3] length:3
new Array(3) // [empty x 3] length:3

解题思路

创建指定长度的数组

思路1Array.apply()方法
Array.apply()方法接收两个参数,第一个为调用时指定的上下文,第二个为一个数组或者类数组对象

 Array.apply(null/0/[]/..., {length: 10})Array.apply(null/0/[]/..., Array(10))Array.apply(null/0/[]/..., new Array(10))// 这三个方法相当于Array(undefined, undefined, undefined, ...)

Array构造函数会根据给定的arguments来创建一个数组(如果不是仅有一个参数且为数字的话), 通过Array.apply传入一个length为10的空数组则相当于, 把一个空数组中的每一个元素的值逐个传入Array()方法, 而空数组中的每一个元素的值都是 undefined

思路2:es6提供了的一个新的api,Array.from()方法
Array.from()方法可以接受数组或类数组对象作为参数,(类数组对象,即类似数组的对象,本质特征只有一点,即必须有length属性)任何有length属性的对象,都可以通过Array.from方法转为数组

 Array.from({length:5})// [undefined, undefined, undefined, undefined, undefined]Array.from(Array(5))// [undefined, undefined, undefined, undefined, undefined]

思路3:es6的另一种写法,扩展运算符

 Array(...Array(5))[...Array(5)]// [undefined, undefined, undefined, undefined, undefined]

以上三种方法,都可生成被forEach或map等方法遍历的指定长度,值为undefined的数组

给指定长度的数组赋值

接下来就只需要赋值,除了forEach或map等遍历数组进行赋值的方法,我们还可以用Array.fill()方法或用上Array,from()的第二个参数

思路1Array.fill()方法
可以将数组的每一项都改编为指定的参数值

Array(3).fill(3)
//  [3, 3, 3]

思路2Array,from()的第二个参数
Array.from()方法接收两个参数时,第一个参数为数组或类对象,参数的length属性确定返回数组的长度,第二个参数为一个函数,第一个数组参数中的每一项都调用该函数

Array.from({length:5},()=>5)
// [5, 5, 5, 5, 5]

通过代码

 const _createArray = (number) => {// return Array.from(Array(number)).fill(number)// return Array.from({length:number},()=>number)// return Array(number).fill(number)// return [...Array(number)].fill(number)}

相关内容

热门资讯

在PyCharm中运行Pyth... 先看一个报错: Traceback (most recent call last):F...
最新或2023(历届)给淘宝买... 给淘宝买家的感谢信范文一:  亲:  您好!  首先在此感谢您对本店的关注与支持!我们是一群年轻上进...
写给物业的一封感谢信范文 怎么... 写给物业的感谢信范文一:  XX建物业管理有限公司成都分公司:  新年伊始辞旧岁,万象更新迎新春。公...
关于最新或2023(历届)企业...  企业对员工的感谢信范文一:  尊敬的各位同事:  大家好!为应对公司生产一线人员缺口,同时保障公司...
最新或2023(历届)企业对员...  企业对员工的感谢信范文一:  尊敬的各位同事:  大家好!为应对公司生产一线人员缺口,同时保障公司...
最新或2023(历届)教你怎么... 给领导的感谢信范文一:  尊敬的xx县交巡警大队领导:  我们是xxx丝绸印花有限公司,今天来信的目...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
捐款感谢信的范文参照 感谢村民... 捐款感谢信的范文一尊敬的xx实验中学的全体师生、员工:  您们好!您们的捐款我们如数收到,您们的爱心...
最新或2023(历届)火灾捐款...  火灾捐款感谢信范文一:同志:  正月初七早晨,新河镇西门街遭受火灾,一排木结构二层七间民房着火,居...
毕业送给给老师的感谢信 六年级... 尊敬的老师:  你好!感谢这三年来你对我的关怀与照顾,在你的帮助下,我也考得了好成绩,我之所以能考到...
最新或2023(历届)给老师的...   给老师的感谢信范文参考一敬爱的老师:  您好!最近在课堂上看到您容光满面,我也替您感到快乐与舒心...
家长写给老师的感谢信范文精选 ... 泾洋初级中学的老师、同学们:  我是贵校初三第十三班学生陈佳豪的家长。就在清明节放假期间,我的孩子在...
【vue2】vue2中的性能优... ⭐ v-for 遍历避免同时使用 v-if ⭐ v-for 中的key绑定唯一的值 ⭐ v-show...
freemarker转成PDF... Spring Boot 集成 FreeMarker 可以通过在 pom.xml 文件中添加依赖项来实...
写给亲爱的妈妈的一封感谢信 给... 写给亲爱的妈妈的一封感谢信亲爱的妈妈:  您好!  恩情,从小处讲可以是炎夏中给你一碗清爽冰凉的柠檬...
受到爱心捐款的感谢信范文 受灾... 受到爱心捐款感谢信一尊敬的老师,亲爱的同学: 你们好!  自9月xx日校工会、校团委发出向后港小学陈...
关于国家助学金感谢信范文 关于... 关于国家助学金感谢信篇一  尊敬的各位领导、老师:  你们好!  我很高兴能向国家和学校申请国家助学...
最新或2023(历届)助学金获...  助学金获奖感谢信范文篇一:  首先,感谢国家对我们贫困大学生的关怀和关爱。  xxxx年10月份我...
关于拾金不昧的感谢信精选范文 ... 拾金不昧的感谢信范文篇一  尊敬的县保健院领导及全体员工:  我叫XXX,于20XX年2月17日下午...