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 相关文章推荐
详细讲解JS节点知识
Jan 31 Javascript
Javascript操作cookie的函数代码
Oct 03 Javascript
使用jquery读取html5 localstorage的值的方法
Jan 04 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
Dec 24 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
Mar 08 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
Jun 14 Javascript
javascript中的面向对象
Mar 30 Javascript
vue组件Prop传递数据的实现示例
Aug 17 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
Dec 12 Javascript
JS实现动态星空背景效果
Nov 01 Javascript
React中使用Vditor自定义图片详解
Dec 25 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 array_merge下进行数组合并的代码
2008/07/22 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
php牛逼的面试题分享
2013/01/18 PHP
destoon之一键登录设置
2014/06/21 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
python字符串反转的四种方法详解
2019/12/02 Python
python实现名片管理器的示例代码
2019/12/17 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
对教师的评语
2014/04/28 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书