JavaScript创建或填充任意长度的数组
直接填充法
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创建或填充任意长度的数组的更多相关文章
- javascript创建一个基于数组的栈结构
栈是一种遵从后进先出(LIFO)原则的有序集合.新添加或待删除的元素都保存在栈的同 一端,称作栈顶,另一端就叫栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底. 栈拥有以下方法: push(eleme ...
- 求任意长度数组的最大值(整数类型)。利用params参数实现任意长度的改变。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- JavaScript进阶 - 第3章 一起组团(数组)
第3章 一起组团(数组) 3-1 一起组团(什么是数组) 我们知道变量用来存储数据,一个变量只能存储一个内容.假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果 ...
- JavaScript的json和Array及Array数组的使用方法
1.关于json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.也可以称为数据集和数组类似,能够存数据! //Ar ...
- JavaScript(第七天)【对象和数组】
什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称做为类,但ECMAScript中却没有这种 ...
- GNU C 中零长度的数组【转】
原文链接:http://www.cnblogs.com/dolphin0520/p/3752492.html 在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个非常奇怪的用 ...
- 用html5的canvas和JavaScript创建一个绘图程序
本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...
- Queue插入的时候报错:源数组长度不足。请检查 srcIndex 和长度以及数组的下限。
异常问题记录: 本想自己手动实现一个日志记录功能.使用Queue队列集合来实现多线程的日志记录. 测试 一个线程写入数据Enqueue和一个线程读取数据Dequeue ,直接用的无休眠死循环. 终于抛 ...
- C语言---递归反向输出任意长度的字符串
(该字符串可以包含空格和回车!) [题目要求] 编写一个递归函数,实现将输入的任意长度的字符串反向输出的功能. 例如输入字符串:ABCD,输出字符串:DCBA. [题目分析] 应用递归的思想有时可以很 ...
- C# 在PDF中创建和填充域
C# 在PDF中创建和填充域 众所周知,PDF文档通常是不能编辑和修改的.如果用户需要在PDF文档中签名或者填写其他内容时,就需要PDF文档中有可编辑的域.开发者也经常会遇到将数据以编程的方式填充到P ...
随机推荐
- Google-HybridSoftwareEngineering: Abseil CPP Library + Tensorflow Cpp codebase.
Latest Advancement: 9781265242435 International edition of Software An Agile Unified Methodology 2nd ...
- win11纯净版电脑出现闪屏的问题
很多雨林木风系统的小伙伴,都已经选择升级Win11纯净版了,但是,只要使用电脑都会出现大大小小的问题.这不,一位用户就出现了电脑闪屏看得眼睛痛.重启系统后也不能解决这个问题.而且也不是显示器故障的情况 ...
- c# ACME client
ACME 协议是一种开放标准,旨在实现数字证书颁发和续订流程的自动化,它彻底改变了证书管理.ACME 的开发旨在简化整个流程,已被许多证书颁发机构 (CA) 广泛采用,并已成为互联网标准 (RFC 8 ...
- Linux PAM认证模块框架
Linux PAM(Pluggable Authentication Modules,可插拔认证模块)是Linux系统中一种模块化.动态可配置的用户级认证框架,用于统一管理各类服务的身份验证. ...
- Gin框架介绍
Gin框架介绍 介绍 Gin 是一个用 Go (Golang) 编写的 Web 框架. 它具有类似 martini 的 API,性能要好得多,多亏了 httprouter,速度提高了 40 倍. 快速 ...
- SQL优化必备脚本:Oracle获取绑定变量的字面SQL文本
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效 ...
- Linux 内核启动过程中的日志输出阶段分析
问题描述 在对比原理图后,发现打印日志的串口是UART2(GPIO3_A2 & GPIO3_A3),但设备树中只开启了UART0(GPIO1_C2&GPIO1_C3) /* 以下设备树 ...
- 不懂Modbus的人干不了能源管理
不了解Modbus的人难以从事能源管理工作.这是因为Modbus在能源管理系统中扮演着至关重要的角色,它是一种广泛应用于工业自动化领域的通信协议,特别是在能源管理.楼宇自动化等领域发挥着关键作用.M ...
- P2985 [USACO10FEB] Chocolate Eating S 题解 二分答案
P2985 [USACO10FEB] Chocolate Eating S 题解 题目理解 首先,我们需要清楚地理解题目要求: 我们有\(N\)块巧克力,每块有一个特定的快乐值\(H_i\). 需要在 ...
- 现代 C++ 并发与多线程编程全景解析
一.引言:并发的重要性 在当今计算机体系结构中,多核与并行化 已经成为常态.无论是桌面应用.游戏引擎.数据库系统,还是后台高性能服务器,C++ 程序都必须有效利用多核 CPU,才能发挥硬件潜力. 并发 ...