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 相关文章推荐
javascript编程起步(第四课)
Jan 10 Javascript
javascript encodeURI和encodeURIComponent的比较
Apr 03 Javascript
单击按钮显示隐藏子菜单经典案例
Jan 04 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
js实现对table动态添加、删除和更新的方法
Feb 10 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
Jul 18 Javascript
jquery实现点击变换导航样式的方法
Aug 31 Javascript
JavaScript学习笔记之ES6数组方法
Mar 25 Javascript
给easyui的datebox控件添加清空按钮的实现方法
Nov 09 Javascript
AngularJS中table表格基本操作示例
Oct 10 Javascript
vue移动端监听滚动条高度的实现方法
Sep 03 Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 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面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
php输出形式实例整理
2020/05/05 PHP
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
js实现网页随机验证码
2020/10/19 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
《鲁班和橹板》教学反思
2014/04/27 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
校园活动策划方案
2014/06/13 职场文书
2014年店长工作总结
2014/11/17 职场文书
父亲节感言
2015/08/03 职场文书
2016教师节感恩话语
2015/12/09 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server