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 相关文章推荐
多广告投放代码 推荐
Nov 13 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
Jan 23 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
Mar 05 Javascript
在js文件中写el表达式取不到值的原因及解决方法
Dec 23 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
jquery二级目录选中当前页的css样式
Dec 08 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
Jan 20 Javascript
微信小程序之前台循环数据绑定
Aug 18 Javascript
详解VueRouter进阶之导航钩子和路由元信息
Sep 13 Javascript
在博客园博文中添加自定义右键菜单的方法详解
Feb 05 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
jquery html添加元素/删除元素操作实例详解
May 20 jQuery
一文彻底理解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新手上路(十三)
2006/10/09 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
JS实现拖动示例代码
2013/11/01 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
js实现点赞效果
2020/03/16 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
jQuery实现图片切换效果
2020/10/19 jQuery
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
python统计cpu利用率的方法
2015/06/02 Python
python开发之list操作实例分析
2016/02/22 Python
Python实现读取并保存文件的类
2017/05/11 Python
python回调函数中使用多线程的方法
2017/12/25 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
实例介绍Python中整型
2019/02/11 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
简单的Python人脸识别系统
2020/07/14 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
医学院护理专业应届生求职信
2013/11/12 职场文书
实习生求职自荐信
2014/02/07 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android