JavaScript如何创建指定长度且所有元素均为0的数组
解答
1. 你写的for循环存在小错误
你给出的for循环终止条件设置有误,i < 525599只会遍历索引0到525598,合计525599个元素,会缺失最后一个索引为525599的元素。把终止条件改成i < 525600就可以正常运行,实现给525600个元素统一赋值0的需求。
2. 更简洁的单行写法
有两种常用的原生JS实现方案,都可以一行完成需求:
方案1:Array.prototype.fill()(最推荐你的场景使用)
// 365天的年份 const minutesOfTheYear = new Array(525600).fill(0); // 364天的年份 const minutesOfTheYear = new Array(524160).fill(0);
逻辑说明:new Array(指定长度)会先创建对应长度的空数组,调用fill(0)会将数组所有位置统一填充为0。由于你填充的是原始类型数值0,不存在引用共享的问题,性能和可读性都很高。
如果需要动态适配不同天数的年份,可以提前计算长度再传入:
// 按你的业务规则判断当年天数是364还是365 const yearDayCount = 365; const minutesOfTheYear = new Array(yearDayCount * 24 * 60).fill(0);
方案2:Array.from()(适合后续需要动态生成初始值的场景)
const minutesOfTheYear = Array.from({length: 525600}, () => 0);
这个方案的优势是扩展性更强,如果后续需要给每个元素设置和索引相关的不同初始值,只需要修改回调函数即可,比如(index) => index就可以生成索引值为元素值的数组。
内容的提问来源于stack exchange,提问作者Adam Dolson
相关产品推荐
相关产品推荐

