js数组初始化时 fill 填充的小bug

circular-array:简单的圆形数组数据结构,用于存储值的有限长度列表 圆形阵列 简单的圆形数组数据结构,用于存储有限长度的值列表并自动删除不再适合数组的值。 所有操作都是 O(1)。 用法 npm install --save circular-array // ES6 import { CircularArray } from 'circular-array' ; // CommonJS const { CircularArray } = require ( 'circular-array' ) ; const gizmos = new CircularArray ( 3 ) ; // gizmo.array() returns: gizmos . push ( gizmo1 ) ; // [gizmo1] gizmos . push ( gizmo2 ) ; // [gizmo1, gizmo2] g 立即下载

数组初始化代码如下:

const arr = new Array(3).fill([])
const arr2 = [[],[],[]]

console.log(JSON.stringify(arr)) //输出:[[],[],[]]
console.log(JSON.stringify(arr2)) //输出:[[],[],[]]
console.log(arr==arr2) //输出 false !! 明明stringify打印出来的内容都一样,为何这里却不等?

var arrIndex = 0
arr[arrIndex].push(123)
arr2[arrIndex].push(123)
console.log(JSON.stringify(arr)) //输出[[123],[123],[123]],为什么每一个元素都添加了123?
console.log(JSON.stringify(arr2)) //输出[[123],[],[]],这才是预期

console.log(arr) //输出[[123], [circular object Array], [circular object Array]],这是什么?引起怀疑
console.log(arr2) //输出[[123], [], []],这是预期

原本以为如下两种数组的初始化结果是相同的:

const arr = new Array(3).fill([])
const arr2 = [[],[],[]]

原来不是。第一种方式其实是:

const emptyArray = new Array([]) //这里只生成了一个对象
const arr = new Array(3).fill(emptyArray) //这里反复用同一个对象填充新生成数组的三个元素

实际结果:[emptyArray, emptyArray, emptyArray]

第二种方式是:

const arr2 = [emptyArray, emptyArray_2, emptyArray_3] //这才是我们原本期望的

结论和提醒:
    []也是一个对象
    Stringify相同,并不能说明两个对象相同,有可能两个对象其实是一个

DDPM代码详细解读(2):Unet结构、正向和逆向过程、IS和FID测试、EMA优化 Diffusion Models专栏文章汇总:入门与实战 前言:大部分DDPM相关的论文代码都是基于《Denoising Diffusion Probabilistic Models》和《Diffusion Models Beat GANs on Image Synthesis》贡献代码基础上小改动的。官方的DDPM是tensorflow TPU版本,暂时没有GPU的版本。上一篇文章介绍了数据集加载,超参数的含义、关键参数的计算方法等,这一篇重点解读一下网络结构。 目录 EMA优化 训练目标. 阅读详情

相关推荐

Innovus快捷键大全:从入门到精通的效率提升指南

本文是Innovus快捷键从入门到精通的效率提升指南,旨在帮助芯片后端设计工程师通过掌握核心快捷键,将重复性鼠标操作转化为高效的肌肉记忆,从而显著提升版图设计、编辑和分析的工作流速度。文章系统讲解了视图导航、对象选择编辑、流程管理等关键快捷键组合,并提供了个性化配置与实战策略,助力工程师突破效率瓶颈,实现人机合一的流畅设计体验。

silver的专栏 797

javascript使用Array.fill()时遇到的坑

在使用javascript的Array.fill()方法时遇到的坑, let nameArr1 = new Array(3).fill({}) nameArr1[1].name = "kaka" console.log(nameArr1) 输出结果如图: 数组元素的值会互相影响,原因暂时不知道。后续查看源码弄懂 ......

yuanwen52的博客 1107

关于三维全波电磁场仿真软件CST的安装和问题解决

百度网盘链接:https://pan.baidu.com/s/1RgWr8Qau1EzSOlh29SewFQ提取码:fzza这里是2023版本的CST,需要其他版本的uu们可以去官网或者其他人的网盘下载。

weixin_60728441的博客 3606

new Array(length).fill({})填充的对象地址是一样的

在用new Array(length).fill({})填充一个对象时,每一项的对象的地址是一样的。这样就导致循环数组时改age的值,数组中所有元素的age都会改变。解决办法就是填充null之后利用map循环时每次传递新对象。

badbaby52906的博客 457

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3414

【OpenCV】复杂场景下的高精度圆检测实战(附完整代码)

本文针对OpenCV霍夫圆检测在复杂场景下易失效的问题,提出了一套基于轮廓分析的高精度圆检测实战方案。通过图像预处理、轮廓发现及多轮几何筛选(面积、周长、椭圆拟合、多边形逼近),有效排除噪声和类圆干扰物,显著提升复杂场景下的检测鲁棒性,并附完整可调参的Python代码实现。

weixin_29095587的博客 199

js/ 数组fill()方法踩坑/避开fill()引用类型

js/ 数组fill()方法踩坑/避开fill()引用类型

qugepminzi的博客 1218

Nginx反向代理MinIO私有桶签名失效?一招解决Host头校验问题

本文详细解析了Nginx反向代理MinIO私有桶时出现的签名失效问题,重点解决了Host头校验导致的"SignatureDoesNotMatch"错误。通过精准配置proxy_set_header保持Host头一致性,并提供了二级目录代理和调试指南,帮助开发者高效解决这一常见技术难题。

weixin_29201313的博客 321

关于Arrays.fill问题

@Test public void test() { List<Integer>[] routes = new List[100]; List<Integer>[] routes2 = new List[100]; Arrays.fill(routes, new ArrayList<>()); for (int i = 0; i < 100; ++i) { routes2[i] = new ArrayList<Integer

我的博客 428

opencv-meshgrid

使用opencv::repeat函数和std::iota函数完成meshgrid功能。 X Y Z 通俗的说就是根据Z的大小生成X矩阵,Y矩阵

yuegooxi的博客 1607

Android逆向实战:抖音聊天记录数据库解析与导出(附完整SQL查询)

本文提供了一份Android逆向实战指南,详细解析了抖音聊天记录数据库的结构与导出方法。通过定位核心的`im.db`数据库文件,深度解读conversation_list、msg等关键表结构,并附上完整的SQL查询语句,帮助开发者或研究人员安全、合规地提取和分析本地聊天数据,适用于移动安全研究与数据分析场景。

mango的博客 855

js fill函数填充数组或对象的解决方法教程

我本来是想创建一个长度为5的数组,数组的每一项都是一个空数组,但是我遇到了一个问题,就是这个数组里面的5个数组其实指向的都是一个数组,即fill函数应该是直接我把传递的参数 [] 进行了赋值,所以我给其中一个数组赋值是,发现所有的数组都有值了,所以想要进行二维数组的初始化,不能这么做;这里先创建一个长度为5,全为0的数组,然后map这个数组,返回一个空数组,此时每个数组就都不一样了,注意:这个fill(0)也是必要的,因为全为空的数组不会执行map函数。返回修改后的原始数组,不创建新数组。

我的博客,不一样的自我表达 1353

【系统分析师】第2章-基础知识:数学与工程基础(核心总结)

数学与工程基础

数据知道的博客 6813

JavaScript数组填充fill函数

大家使用数组估计最让人厌烦的就是对数组进行赋初值,要不就是手动的进行赋值要不就是使用for循环进行赋值。在ES6中可以使用fill方法进行数组的初始化。fill方法接收3个参数,第一个参数是赋值的值为必要参数,第二个参数是赋值开始的起始位置,第3个参数是赋值开始的终止位置此位置不会进行赋值。 当只有第1个参数是默认设置数组的所有值为参数1的值。 当只有第1,2两个参数值设置从第2个值的位置到数组的末尾使用参数1的值进行赋值。 同时还需要注意的是不能对超出数组长度的值进行赋值。 请看下...

jifukui的专栏 3337

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JS数组的填充

BootStrapTable表格初始化的数据,可以通过数组的填充来实现

菜鸟记录 3123

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【JavaScript】详解数组方法 fill()

什么是fill()方法?fill()方法是ES6中引入的一个数组方法,用于将数组的全部或部分元素用指定的值进行填充。这个方法会改变原数组,并返回修改后的数组。fill()方法的语法value:要填充的值。start:开始填充的索引,默认为0。end:停止填充的索引(不包含该索引),默认为数组长度。通过本文的介绍,我们详细探讨了JavaScript中的fill()方法,从基本用法到进阶应用,并结合实际案例展示了它的强大功能。掌握fill()方法,可以让你在处理数组时更加得心应手。基本用法:理解。

lph159的博客 4423

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaScript 数组填充方法 Array.fill()

项目开发中,我们经常会定义具有特定长度的初始化数组,数组中的每一项元素默认为 empty 空位占位 如果对数组这些空位添加默认的元素,ES6 提供了 fill() 方法实现这一操作,本文详细总结 fill() 方法的使用 2. fill() 语法 fill() 方法用一个固定值填充一个数组从起始索引到终止索引内的全部元素,不包含终止索引返回修改后的数组,不修改原数组。使用语法:array.fill( value [,start [,end] ] )

简单的编程博客 6263

js数组fill()方法

ES6为Array增加了fill()函数,使用制定的元素填充数组,其实就是用默认内容初始化数组。 该函数有三个参数。 arr.fill(value, start, end) 复制代码value:填充值。 start:填充起始位置,可以省略。 end:填充结束位置,可以省略,实际结束位置是end-1。 1.采用一默认值填初始化数组。 const arr1 = [1, 2, 3, 4, 5, 6...

weixin_33857679的博客 3053

JS中用Array.fill() 初始化 二维数组

最近在刷LeetCode,经常就会遇到需要初始化二维数组的情况。由于学术不精,采用new Array().fill([])初始化二位数组,导致了代码无法通过测试用例。本文就是来总结一下得到的教训。 Array.fill(value, start, end) 我们知道,Array.fill()方法可以替换或填充数组里的值。 参数value为替换值,不可缺省。 start表示开始替换的位置。 end表...

zzzzzzz823的博客 4718

js fill函数填充数组或对象的问题

fill函数填充空数组,结果填充的都是一个数组

brilliantSt的博客 2783

数组fill()方法

昨天做了一个公司的笔试题,遇到了一道题考察了数组的fill方法,瞬间懵逼,强忍住考试时想按f12的冲动,用笔记记下来了。 1、数组的fill()方法 (1)fill()方法可用于向空数组的初始化,接受一个参数,表示填充的值,将数组的左右项 var arr1 = []; arr1.fill(6); console.log(arr1); //[] 原数组中没有定长度,没有数据可以替换,所以结果仍为空...

weixin_40736319的博客 3279

js 数组初始化

最近几个月都在刷LeetCode,刚刚,就在刚刚,看到公众号说华为,京东,阿里等等大厂都在裁员缩招,很是焦虑啊。互联网的冬天提前来临了么。。。。 本来数组初始化很简单,但就是和java,c++他们不一样,js在创建数组的时候是不会自动初始化的,也就是说js创建数组如果不赋值就会是undefine。总之每次刷题的时候,都会遇到数组没有初始化而出现NAN的问题,就就就很烦,所以--------代码如...

weixin_30443731的博客 3973

JavaScript之填充数组的五种方法

填充数组是一种常见的操作,尤其是当你需要初始化数组或填充默认值时。本文将介绍几种不同的方法来填充数组,每种方法都有其适用的场景和用法。

呼叫6945的博客 2186

彻底搞懂ES6数组填充:fill方法让数据初始化效率提升300%

你是否还在使用for循环手动初始化数组?是否遇到过嵌套数组填充时的引用陷阱?ES6引入的Array.prototype.fill()方法彻底改变了数组初始化的方式,让代码更简洁、执行效率提升数倍。本文将从基础用法到高级技巧,全面解析fill方法的工作原理与实战应用,帮你写出更优雅的JavaScript代码。 ## 从传统初始化到ES6新范式 在ES6之前,初始化一个固定长度的数组并填充相同值,...

gitblog_00943的博客 928

ES6数组-fill()函数

js数组的fill函数 一、函数介绍1.函数的作用2.函数的语法3.对应的参数二、实际用法1.填充全部(1)全部填充新建的固定长度数组(2)全部覆盖现有数组2.填充部分(1)部分填充新建的固定长度数组(2)部分覆盖现有数组 一、函数介绍 1.函数的作用 fill() 方法用于将一个固定值替换数组的元素。可将一个数组中的部分或者全部内容替换为一个你想要的固定值 2.函数的语法 array.fill(value, start, end) 3.对应的参数 参数 描述 value 必需。填充的固定值

个人博客 4119

数组填充 Array().fill()

解释: ES6为Array增加了fill()函数,使用制定的元素填充数组,其实就是用默认内容初始化数组 简单应用: // 创建空数组,并往空数组添加5个3 Array(5).fill(3) => [3,3,3,3,3] 语法: fill(value) 值 开始位置fill(value, start)值 开始位置fill(value, start, end) 值 开始位置 结束位置(end - 1为实际结束下标) const arr = [1,2,3,4,5,6];...

weixin_42274805的博客 3434
上一篇: 直观理解Java泛型的子类型
下一篇: Compose相对React的改进
Max2005
博客等级 码龄22年 45粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值