JS创建或填充任意长度数组的小技巧汇总


Posted in Javascript onOctober 24, 2021

前言

在 JavaScript 开发中,经常需要有需要创建特性长度数组的场景,本文总结了几种创建或填充任意长度的数组的小技巧,学会了可以提升编程效率。

直接填充法

采用最原始的方法,手动填充所需长度的数组。

const arr = [0,0,0];

for 循环 push() 法

和第一种方法差不多,只是使用 for 循环创建特定长度的数组

var len = 3;
var arr = [];
for (let i=0; i < len; i++) {
  arr.push(0);
}

Array 构造函数法

var len = 3;
var arr = new Array(len);

在 Array 构造函数后面加上 fill() 方法

var len = 3;
var arr = new Array(len).fill(0);

如果你用对象作为参数去 fill() 一个数组,所有元素都会引用同一个实例(也就是这个对象没有被克隆多份,Array.from() 则没有这个问题):

var len = 3;
var obj = {};
var arr = new Array(len).fill(obj);

所以操作这个数组时应该比用构造函数创建的更快。不过创建数组的速度比较慢,因为引擎可能需要随着数组的增长多次重新分配连续的内存。

使用 undefined 填充数组

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

下面这种方式仅适用于可迭代的值,并且与 Array.from()具有类似的效果:

[...new Array(3)]             // [ undefined, undefined, undefined ]

使用 Array.from() 进行映射

如果提供映射函数作为其第二个参数,则可以使用 Array.from() 进行映射。

用值填充数组

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

使用唯一(非共享的)对象创建数组

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

用升序整数数列创建数组

Array.from({length: 3}, (x, i) => i)    // [ 0, 1, 2 ]

用任意范围的整数进行创建

var start = 2, end = 5;
Array.from({ length: end - start }, (x, i) => i + start)    // [ 2, 3, 4 ]

另一种创建升序整数数组的方法使用 keys()

[...new Array(3).keys()]              // [ 0, 1, 2 ]

总结

到此这篇关于JS创建或填充任意长度数组的小技巧的文章就介绍到这了,更多相关JS创建填充数组内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
B/S开发中常用javaScript技术与代码
Mar 09 Javascript
使用dynatrace-ajax跟踪JavaScript的性能
Apr 12 Javascript
Javascript基础知识(三)BOM,DOM总结
Sep 29 Javascript
Jil,高效的json序列化和反序列化库
Feb 15 Javascript
Angular.js去除页面中显示的空行方法示例
Mar 30 Javascript
js移动端图片压缩上传功能
Aug 18 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
May 15 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
Sep 25 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
超轻量级的js时间库miment使用解析
Aug 02 Javascript
微信小程序3种位置API的使用方法详解
Aug 05 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
May 07 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
Oct 24 #Javascript
javascript遍历对象的五种方式实例代码
Oct 24 #Javascript
低门槛开发iOS、Android、小程序应用的前端框架详解
Oct 16 #Javascript
基于angular实现树形二级表格
ajax请求前端跨域问题原因及解决方案
浅谈TypeScript 索引签名的理解
JavaScript 反射学习技巧
Oct 16 #Javascript
You might like
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
Python装饰器decorator用法实例
2014/11/10 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
实用自动化运维Python脚本分享
2018/06/04 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
对python函数签名的方法详解
2019/01/22 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
毕业生物理教师求职信
2013/10/17 职场文书
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
打造完美自荐信
2014/01/24 职场文书
践行三严三实心得体会
2014/10/13 职场文书
办公经费申请报告
2015/05/15 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
Java 关于String字符串原理上的问题
2022/04/07 Java/Android