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 相关文章推荐
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
js动态设置鼠标事件示例代码
Oct 30 Javascript
浅谈js的异步执行
Oct 18 Javascript
Javascript 引擎工作机制详解
Nov 30 Javascript
前端把html表格生成为excel表格的实例
Sep 19 Javascript
js原生日历的实例(推荐)
Oct 31 Javascript
浅析JS抽象工厂模式
Dec 14 Javascript
使用veloticy-ui生成文字动画效果
Feb 08 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
Mar 28 Javascript
微信小程序自定义组件之可清除的input组件
Jul 17 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 Javascript
JS闭包原理与应用经典示例
Dec 20 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注释实例技巧
2008/10/03 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
vue的滚动条插件实现代码
2019/09/07 Javascript
jquery+ajax实现异步上传文件显示进度条
2020/08/17 jQuery
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
Python实现求解括号匹配问题的方法
2018/04/17 Python
django输出html内容的实例
2018/05/27 Python
Python应用库大全总结
2018/05/30 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
秋季校运动会广播稿
2014/02/23 职场文书
治超工作实施方案
2014/05/04 职场文书
投标诚信承诺书
2014/05/26 职场文书
同意落户证明
2015/06/19 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
基于python实现银行管理系统
2021/04/20 Python
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
vscode内网访问服务器的方法
2022/06/28 Servers