直接填充法

const arr = [0,0,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);

push() 方法

var len = 3;
var arr = [];
for (let i=0; i < len; i++) {
arr.push(0);
}

所以操作这个数组时应该比用构造函数创建的更快。不过创建数组的速度比较慢,因为引擎可能需要随着数组的增长多次重新分配连续的内存。

使用 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 ]

JavaScript创建或填充任意长度的数组的更多相关文章

  1. javascript创建一个基于数组的栈结构

    栈是一种遵从后进先出(LIFO)原则的有序集合.新添加或待删除的元素都保存在栈的同 一端,称作栈顶,另一端就叫栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底. 栈拥有以下方法: push(eleme ...

  2. 求任意长度数组的最大值(整数类型)。利用params参数实现任意长度的改变。

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. JavaScript进阶 - 第3章 一起组团(数组)

    第3章 一起组团(数组) 3-1 一起组团(什么是数组) 我们知道变量用来存储数据,一个变量只能存储一个内容.假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果 ...

  4. JavaScript的json和Array及Array数组的使用方法

    1.关于json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.也可以称为数据集和数组类似,能够存数据! //Ar ...

  5. JavaScript(第七天)【对象和数组】

    什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称做为类,但ECMAScript中却没有这种 ...

  6. GNU C 中零长度的数组【转】

    原文链接:http://www.cnblogs.com/dolphin0520/p/3752492.html 在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个非常奇怪的用 ...

  7. 用html5的canvas和JavaScript创建一个绘图程序

    本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...

  8. Queue插入的时候报错:源数组长度不足。请检查 srcIndex 和长度以及数组的下限。

    异常问题记录: 本想自己手动实现一个日志记录功能.使用Queue队列集合来实现多线程的日志记录. 测试 一个线程写入数据Enqueue和一个线程读取数据Dequeue ,直接用的无休眠死循环. 终于抛 ...

  9. C语言---递归反向输出任意长度的字符串

    (该字符串可以包含空格和回车!) [题目要求] 编写一个递归函数,实现将输入的任意长度的字符串反向输出的功能. 例如输入字符串:ABCD,输出字符串:DCBA. [题目分析] 应用递归的思想有时可以很 ...

  10. C# 在PDF中创建和填充域

    C# 在PDF中创建和填充域 众所周知,PDF文档通常是不能编辑和修改的.如果用户需要在PDF文档中签名或者填写其他内容时,就需要PDF文档中有可编辑的域.开发者也经常会遇到将数据以编程的方式填充到P ...

随机推荐

  1. Google-HybridSoftwareEngineering: Abseil CPP Library + Tensorflow Cpp codebase.

    Latest Advancement: 9781265242435 International edition of Software An Agile Unified Methodology 2nd ...

  2. win11纯净版电脑出现闪屏的问题

    很多雨林木风系统的小伙伴,都已经选择升级Win11纯净版了,但是,只要使用电脑都会出现大大小小的问题.这不,一位用户就出现了电脑闪屏看得眼睛痛.重启系统后也不能解决这个问题.而且也不是显示器故障的情况 ...

  3. c# ACME client

    ACME 协议是一种开放标准,旨在实现数字证书颁发和续订流程的自动化,它彻底改变了证书管理.ACME 的开发旨在简化整个流程,已被许多证书颁发机构 (CA) 广泛采用,并已成为互联网标准 (RFC 8 ...

  4. Linux PAM认证模块框架

    Linux PAM(Pluggable Authentication Modules,可插拔认证模块)是Linux系统中一种​​模块化.动态可配置的用户级认证框架​​,用于统一管理各类服务的身份验证. ...

  5. Gin框架介绍

    Gin框架介绍 介绍 Gin 是一个用 Go (Golang) 编写的 Web 框架. 它具有类似 martini 的 API,性能要好得多,多亏了 httprouter,速度提高了 40 倍. 快速 ...

  6. SQL优化必备脚本:Oracle获取绑定变量的字面SQL文本

    我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效 ...

  7. Linux 内核启动过程中的日志输出阶段分析

    问题描述 在对比原理图后,发现打印日志的串口是UART2(GPIO3_A2 & GPIO3_A3),但设备树中只开启了UART0(GPIO1_C2&GPIO1_C3) /* 以下设备树 ...

  8. 不懂Modbus的人干不了能源管理

    不了解Modbus的人难以从事能源管理工作.‌这是因为Modbus在能源管理系统中扮演着至关重要的角色,它是一种广泛应用于工业自动化领域的通信协议,特别是在能源管理.楼宇自动化等领域发挥着关键作用.M ...

  9. P2985 [USACO10FEB] Chocolate Eating S 题解 二分答案

    P2985 [USACO10FEB] Chocolate Eating S 题解 题目理解 首先,我们需要清楚地理解题目要求: 我们有\(N\)块巧克力,每块有一个特定的快乐值\(H_i\). 需要在 ...

  10. 现代 C++ 并发与多线程编程全景解析

    一.引言:并发的重要性 在当今计算机体系结构中,多核与并行化 已经成为常态.无论是桌面应用.游戏引擎.数据库系统,还是后台高性能服务器,C++ 程序都必须有效利用多核 CPU,才能发挥硬件潜力. 并发 ...