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 相关文章推荐
jQuery判断元素是否是隐藏的代码
Apr 24 Javascript
js中widow.open()方法使用详解
Jul 30 Javascript
Jquery easyUI 更新行示例
Mar 06 Javascript
javascript实现滑动解锁功能
Dec 31 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
Mar 16 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
Node.js  REPL (交互式解释器)实例详解
Aug 06 Javascript
javascript数组定义的几种方法
Oct 06 Javascript
关于vue-router的那些事儿
May 23 Javascript
vue-cli3.0 环境变量与模式配置方法
Nov 08 Javascript
JavaScript实现页面中录音功能的方法
Jun 04 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 字符串函数收集
2010/03/29 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
PHP sprintf()函数用例解析
2011/05/18 PHP
PHP安全防范技巧分享
2011/11/03 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
js验证表单第二部分
2006/11/25 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
python自定义类并使用的方法
2015/05/07 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
python 实现A*算法的示例代码
2018/08/13 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
Python谱减法语音降噪实例
2019/12/18 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
python中os.remove()用法及注意事项
2021/01/31 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
有原因的手表:Flex Watches
2019/03/23 全球购物
销售经理工作职责范文
2013/12/03 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
实习指导老师意见
2015/06/04 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
python 三边测量定位的实现代码
2021/04/22 Python
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers