当前位置: 首页 > news >正文

js创建二维空数组

js创建二维空数组

  • 错误使用
    • 原因分析
      • 分析1
      • 举个例子:
      • 解释:
  • 正确创建二维数组
  • 总结:

错误使用

今天在写代码的时候,需要创建一个长度为2的空二维数组,我当时第一反应就是,使用let arr = new Array(2).fill([]),我在控制台打印了,发现确实创建了一个空二维数组,但是,实际上我根据索引进行数组push时,发现二维数组中的两个元素同时改变。后来查找资料发现如下原因:

原因分析

使用 let arr = new Array(2).fill([]) 创建二维数组时不可行的原因,实际上是因为 Array.prototype.fill() 方法填充的是对同一个引用的所有数组元素,而不是创建独立的空数组。因此,fill([]) 会将所有的数组元素都填充为对同一个空数组的引用。

分析1

let arr = new Array(2).fill([]);
console.log(arr);  // 输出:[[], []]
  • 这段代码确实会生成一个长度为 2 的数组 arr,其中包含两个数组元素 [[], []]。但这两个元素并不是两个独立的空数组,而是引用了同一个空数组对象。

  • 问题:由于数组元素是引用类型,因此数组 arr 的两个元素实际指向同一个空数组。修改其中一个元素,也会影响到另一个元素。

举个例子:

let arr = new Array(2).fill([]);// 修改 arr[0] 中的内容
arr[0].push(1);console.log(arr);  // 输出:[[1], [1]]

解释:

  • 当你使用 arr[0].push(1) 向第一个空数组中添加元素时,实际上会影响到 arr[1],因为它们指向的是同一个空数组对象。因此,arr[1] 也变成了 [1]

正确创建二维数组

要避免这个问题,应该确保每个数组元素都指向不同的空数组对象。你可以使用 map() 来创建每个元素的独立副本。

let arr = new Array(2).fill(null).map(() => []);
console.log(arr);  // 输出:[[], []]// 修改 arr[0] 中的内容,不会影响 arr[1]
arr[0].push(1);
console.log(arr);  // 输出:[[1], []]
  • 这里,fill(null) 先用 null 填充数组,然后通过 map(() => []) 为每个元素创建一个新的空数组。这样,arr[0]arr[1] 就是两个独立的空数组,不会互相影响。

总结:

  • new Array(2).fill([]) 创建的二维数组中的两个元素引用的是同一个空数组。
  • 解决方法是使用 map() 或其他方式确保每个元素指向不同的数组对象。

相关文章:

js创建二维空数组

js创建二维空数组 错误使用原因分析分析1举个例子:解释: 正确创建二维数组总结: 错误使用 今天在写代码的时候,需要创建一个长度为2的空二维数组,我当时第一反应就是,使用let arr new Array(2).fill([])&…...

AF3 checkpoint_blocks函数解读

checkpoint_blocks 函数实现了一种分块梯度检查点机制 (checkpoint_blocks),目的是通过分块(chunking)执行神经网络模块,减少内存使用。在深度学习训练中,梯度检查点(activation checkpointing)是一种显存优化技术。该代码可以: 对神经网络的块(blocks)按需分块,并对…...

下载并使用CICFlowMeter提取网络流特征(Windows版本)

CICFlowMeter简介 CICFlowMeter是一款流量特征提取工具,从原始的pcap包中聚合流,并提取流特征到csv格式的文件中。使用CICFlowMeter提取的特征有助于后续基于网络流的分析与建模 官方github地址:https://github.com/ahlashkari/CICFlowMete…...

深入了解JSON-LD:语义化网络数据的桥梁

目录 前言1. JSON-LD概述1.1 什么是JSON-LD?1.2 JSON-LD的优势 2. JSON-LD的核心概念2.1 上下文(Context)2.2 词汇表(Vocabulary)2.3 标注语言(Markup Language) 3. JSON-LD的语法与结构3.1 基本…...

分布式 IO 模块助力冲压机械臂产线实现智能控制

在当今制造业蓬勃发展的浪潮中,冲压机械臂产线的智能化控制已然成为提升生产效率、保障产品质量以及增强企业竞争力的关键所在。而分布式 IO 模块的应用,正如同为这条产线注入了一股强大的智能动力,开启了全新的高效生产篇章。 传统挑战 冲压…...

webrtc源码编译【linux/安卓】

编译webrtc库 环境ubuntu22.04 推荐在linux里运行一个docker容器,在新环境里搭建。 准备工作 #我使用了下面的安装命令。目前知道的必须需要的 git python3 unzip ninja jdk file lsb-release apt install -y git curl build-essential python3 python3-pip pyt…...

亚矩阵云手机

亚矩阵云手机是一个集成了云计算、大数据、人工智能和边缘计算等先进技术的云平台,它通过ARM虚拟化技术在云端运行手机应用,提供了全面、高效且稳定的服务。以下是对亚矩阵云手机的详细解析: 技术基础与架构 1.ARM虚拟化技术:亚矩阵云手机基于ARM服务器和…...

Flink状态编程

Flink处理机制的核心就是“有状态的流处理”,在某些情况下,一条数据的计算不仅要基于当前数据自身,还需要依赖数据流中的一些其他数据。这些在一个任务中,用来辅助计算的数据我们就称之为这个任务的状态。 一、按键分区状态&…...

【Django篇】--动手实现路由模块化与路由反转

一、路由模块化 在一个Django项目中,由于功能类别不同,因此需要将不同功能进行模块化设计。在Django项目中模块化设计则需要将不同模块封装为对应的app模块,每一个模块中涉及到的路由则也需要进行模块化设计,才能更好的让整个项目…...

多元统计分析练习题3

从总体 A A A 和 B B B 中分别抽取 n 10 n10 n10 个样本 假设 A , B A,B A,B 协方差矩阵相同,并且服从多元正态分布 计算得到的样本均值和样本离差阵分别为 X ‾ A ( 1 , 2 , 3 ) T , V B d i a g ( 1 , 1 , 1 ) X ‾ B ( 1.5 , 2.5 , 3.5 ) T , V B d i…...

windows remote desktop service 远程桌面RDS授权激活

windows remote desktop service 远程桌面RDS授权激活 功能介绍:操作步骤:1、添加远程桌面授权服务2、添加远程桌面授权许可 功能介绍: 本文以 windows Server 2016为例,系统默认远程桌面连接数是2个用户,如果多余两个…...

6-pandas数据读取

前言 一、分组聚合 1.groupby使用: groupby() 是 pandas 库中用于对数据进行分组操作的一个非常重要的方法。 import pandas as pddata {城市: [北京, 上海, 广州, 北京, 上海, 广州],人口: [2154, 2424, 1303, 2154, 2424, 1303],年龄: [25, 30, 35, 25, 30, 3…...

【Logback详解】

Logback详解 Logback 是一个用于 Java 应用的日志框架,它由 Log4j 的创始人 Ceki Glc 创建。Logback 分为三个模块:logback-core、logback-classic 和 logback-access。logback-classic 模块实现了 SLF4J (Simple Logging Facade for Java) API&#xf…...

Flume的概念和原理

一、Flume的概念 1、flume 作为 cloudera 开发的实时日志收集系统 2、flume一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种…...

初始nginx

华子目录 nginx介绍nginx功能介绍基础特性web服务相关功能nginx进程结构web请求处理机制 nginx进程间通信nginx启动与http连接建立http处理过程 nginx模块介绍nginx命令演示 nginx介绍 nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理服…...

vulnhub靶场 Empire LupinOne

使用命令查看靶机ip,访问ip arp-scan -l 使用御剑扫描一下子域名,但是没有获取到什么有用的信息 这是一个Apache文档,没有什么用 紧接着我们尝试暴力破解,这里推荐使用ffuf工具暴力破解目录,kali自带的ffuf扫描速度贼快 参数解释…...

6-Gin 路由详解 --[Gin 框架入门精讲与实战案例]

Gin 是一个用 Go 语言编写的 HTTP Web 框架,以其高性能和简洁的 API 而闻名。它提供了一套强大的路由功能,使得开发者可以轻松地定义 URL 路由规则,并将这些规则映射到具体的处理函数(handler)。以下是关于 Gin 路由的…...

使用Lodash工具库的orderby和sortby进行排序的区别

简介 _.orderBy 和 _.sortBy 是 Lodash 库中用于排序数组的两个函数。 区别 _.orderBy 允许你指定一个或多个属性来排序,并为每个属性指定排序方向(升序或降序)。默认所有值为升序排,指定为"desc" 降序&#xff0c…...

CSS面试题|[2024-12-24]

1.说一下CSS的盒模型 在HTML页面中的所有元素都可以看成是一个盒子 盒子的组成:内容content、内边距padding、边框border、外边距margin 盒模型的类型: 标准盒模型 margin border padding content IE盒模型 margin content(包括border p…...

flask-admin 在modelview 视图中重写on_model_change 与after_model_change

背景: 当我们在使用flask-admin进行WEB开发时应该第一时间想到的是竟可能使用框架推荐的modelView模型,其次才是自定义模型 baseview,因为只有modelview模型下开发才能最大限度的提高效率。 制作: 1、在modelview视图下框架会通过默认视图…...

4.2-4.4

这期准备iic驱动上一期已经准备好了设备树&#xff0c;iic的驱动代码分为 I2C 适配器驱动和 I2C 设备驱动&#xff0c;一般iic适配器驱动由soc厂商去写iic设备树追加&#xff1a;1 &i2c4 { 2 status "okay"; 3 pinctrl-0 <&i2c4m1_xfer…...

用Flask+手机5分钟搭建临时测试服务器(Windows/Mac双平台教程)

5分钟搭建Flask移动端测试服务器&#xff1a;Windows与Mac双平台实战指南 每次在手机上预览网页效果都要反复上传到测试服务器&#xff1f;其实你的笔记本就能变身临时测试服务器。作为移动端开发者&#xff0c;我们经常需要快速验证页面在手机上的显示效果&#xff0c;而Flask…...

二次元创作神器体验:沉浸式漫画分镜界面,快速产出火影同人作品

二次元创作神器体验&#xff1a;沉浸式漫画分镜界面&#xff0c;快速产出火影同人作品 1. 创作工具概览 「忍者绘卷&#xff1a;通灵之术」是一款专为二次元创作者设计的AI绘画工具&#xff0c;基于Tongyi-MAI Z-Image Turbo模型深度优化。这款工具最大的特色是采用了创新的漫…...

DeepSeek-OCR-2部署教程:如何在多卡服务器上分配显存并行处理批量文档

DeepSeek-OCR-2部署教程&#xff1a;如何在多卡服务器上分配显存并行处理批量文档 1. 项目概述 DeepSeek-OCR-2是一个基于多模态视觉大模型的智能文档解析系统&#xff0c;能够将图像中的文档内容转换为结构化的Markdown格式。与传统OCR技术相比&#xff0c;它不仅能够识别文…...

性价比高的南昌实体店线上获客哪个靠谱

在南昌&#xff0c;实体店想要在竞争激烈的市场中脱颖而出&#xff0c;线上获客是关键。然而&#xff0c;面对众多的线上获客途径&#xff0c;哪个才靠谱且性价比高呢&#xff1f;今天&#xff0c;我们就来详细探讨一下&#xff0c;同时为大家推荐南昌琨瑜象限本地生活运营服务…...

Trae 国际版下载地址

Trae 国际版官方网站下载页&#xff1a;https://www.trae.ai/download...

飞牛NAS部署小雅Emby全家桶时遇到端口冲突?手把手教你修改迅雷端口

1. 端口冲突问题现象分析 最近在飞牛NAS上部署小雅Emby全家桶时&#xff0c;不少用户反馈会遇到容器启动失败的情况。经过排查发现&#xff0c;这通常是由于小雅Emby默认使用的2345端口与迅雷的默认端口冲突导致的。具体表现为&#xff1a;当尝试启动小雅Emby容器时&#xff0c…...

HAL_CAN_AddTxMessage硬件中断?原来是这个参数在捣鬼(附正确用法)

HAL_CAN_AddTxMessage硬件中断问题深度解析与实战指南 在STM32 HAL库开发中&#xff0c;CAN总线通信是工业控制、汽车电子等领域的核心功能模块。许多工程师在使用HAL_CAN_AddTxMessage函数时&#xff0c;都曾遭遇过神秘的硬件中断问题——代码看似正确&#xff0c;编译无警告&…...

ML302开发板AT指令实战:从驱动安装到第一个AT命令响应(避坑指南)

ML302开发板AT指令实战&#xff1a;从驱动安装到第一个AT命令响应&#xff08;避坑指南&#xff09; 当你第一次拿到中移物联的ML302开发板时&#xff0c;可能会被它强大的4G Cat.1通信能力所吸引&#xff0c;但真正开始使用时&#xff0c;往往会在基础环节遇到各种"坑&qu…...

2026高性价比降AI工具盘点 高效过审适配全场景

一、摘要 据2026年学术服务行业调研数据显示&#xff0c;随着AIGC工具在写作场景的普及&#xff0c;国内各类文档的AI生成占比较上年提升35%&#xff0c;高校、科研机构及企业对AI生成内容的管控标准持续收紧。超过70%的用户曾遇到过降AI效果不稳定、收费偏高、检测不通过售后无…...