Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Array.fill对所有索引都使用相同的对象。

Array.fill对所有索引都使用相同的对象。
EN

Stack Overflow用户
提问于 2016-06-13 13:14:56
回答 2查看 78关注 0票数 2

我使用Array.fill将数组预先填充到其他数组中。修改一个索引的数组也会修改另一个索引的数组。意思是同一个对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = Array(2).fill([]);

arr[0].push('a');
arr[1].push('b');

// [['a', 'b'], ['a', 'b']]

我一直在阅读一些文档,但我没有看到任何地方提到过这种行为。同样的事情也发生在一个对象文字上。

这有什么道理吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-13 13:20:33

是的,确实如此。

您正在传递对已创建对象实例的引用。如果您首先声明数组(例如。var c = []),然后使用它填充arr,您将得到相同的行为。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const c = [];
const arr = Array(2).fill(c);

c.push("a");    
c.push("b");

// c ["a", "b"]
// arr [reference to c, reference to c] => [["a","b"], ["a", "b"]]
票数 3
EN

Stack Overflow用户

发布于 2016-06-13 13:23:04

是的,这是合理的。

fill期望在所有索引中都包含一个值,而不是为每个索引生成一个新值的函数。而且它也不会隐式地克隆您传递的值(没有标准函数这样做)。这只是通常的赋值行为,其中对象(引用值)保持不变。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37799249

复制
相关文章
《Effective Java》—— 对于所有对象都通用的方法
本节主要涉及Object中通用的一些方法,比如equals,hashCode,toString,clone,finalize等等 覆盖equals时请遵守通用约定 equals方法实现的等价关系: 自反性:对于所有的非null,a=a 对称性:a=b,则b=a 传递性:a=b,b=c,则a=c 一致性:对于没有被修改的ab,如果a=b,则一直a=b 非空性:对于任何非Null,a!=null 高质量equals方法的诀窍: 使用==操作符检查——“参数是否为这个对象的引用” 使用instanceof检
用户1154259
2018/01/17
6460
对象迁移空间对索引状态的影响
上篇文章介绍了迁移表、索引对象的操作: http://blog.csdn.net/bisal/article/details/50804714 发现漏了一个细节,就是表、LOB对象移动后索引的状态。
bisal
2019/01/29
5010
效率编程 之「对于所有对象都通用的方法」
覆盖equals方法看似很简单,但是有许多覆盖方式会导致错误,并且后果非常严重。最容易避免这类问题的办法就是不覆盖equals方法,在这种情况下,类的每个实例都只与它自身相等。如果类满足了以下任何一个条件,就不需要我们覆盖equals方法:
CG国斌
2019/05/26
4190
​第3章 对于所有对象都通用的方法
现在技术圈特别浮躁,也很容易被感染,看了很多文章很多博客,最后发现自己依然不懂,再加上每天信息爆炸,就特别容易浮躁
程序亦非猿
2019/08/16
5230
Java 接口的所有子类都需要执行相同处理逻辑的推荐姿势
在实际开发过程中,有些时候我们可能会遇到这样的场景:我们定义接口给上游使用,不同的业务类型定义不同的子类型,实现该接口的某个函数,但是这些子类型会有很多公共的逻辑(公共的步骤)。
明明如月学长
2021/12/02
9610
Java 接口的所有子类都需要执行相同处理逻辑的推荐姿势
《Effective Java》 第二讲:对于所有对象都通用的方法
1. 自反性:对于任何非空的引用 x 都有 x.equals( x ) 都必须返回 true 。 ( 参见:什么是自反、反自反 )
微风-- 轻许--
2022/04/13
1410
CBO如何选择相同cost的索引
根据10053显示,可以看出,IDX_Z_01和IDX_Z_02这两个索引,cost相同,CBO会选择何种执行计划?
bisal
2019/01/30
9200
使用Python,怎么检查列表中所有元素是否相同?
如何判断一个列表的元素是否全部一样,有很多种方法。今天来分享一下,我最喜欢的一种方法,推荐给你。
TalkPython
2020/12/29
8.4K0
Effective-java-读书笔记之对于所有对象都通用的方法
例外: 实例受控的值类: 枚举, 一个值对应一个实例, 所以不需要覆盖equals.
特特
2022/10/10
4660
[JavaScript] JS 获取所有相同class的div,并遍历
Again,这个问题对于使用mvvm框架,例如vue,weex和angular 是任何难度的因为他们的dom都是直接用js生成控制的,在生成之初就直接处理好久好了。
用户2353021
2020/05/11
14K0
《Effective Java》读书笔记(二)之对于所有对象都通用的方法
一般以下几种情况,不适宜覆盖equals方法 1.类的每个实例本质上都是唯一的,对于代表活动实体而不是值的类确实如此,例如Thread.
老马的编程之旅
2022/06/22
3040
2021-08-16:回文对。给定一组 互不相同 的单词, 找出所有 不同 的索引对 (i, j),使得列表中的两个单词, wo
2021-08-16:回文对。给定一组 互不相同 的单词, 找出所有 不同 的索引对 (i, j),使得列表中的两个单词, words[i] + words[j] ,可拼接成回文串。
福大大架构师每日一题
2021/09/03
1.1K0
2021-08-16:回文对。给定一组 互不相同 的单词, 找出所有 不同 的索引对 (i, j),使得列表中的两个单词, wo
对 list 中的相同数据进行分组
同一组数据分组 需求:一个 list 里可能会有出现一个用户多条数据的情况。要把多条用户数据合并成一条。 思路:将相同的数据中可以进行确认是相同的数据,拿来做分组的 key,这样保证不会重。 实际中使用,以用户数据为例,可能用户名和身份证号是不会变的,用这两个条件拼接起来。
潇洒
2019/06/28
5.7K0
使用Unity获取所有子对象及拓展方法的使用
这个问题还是比较简单的,无非就是一个for循环就可以全部获取到了,但是我喜欢简单直达,有没有直接就能获取到所有的子对象函数呢,搜了好久都没有,所以我准备写一个扩展函数,来自己补充这个函数,一起来看一下吧。
恬静的小魔龙
2022/08/07
2.5K0
终于我用JOL打破了你对java对象的所有想象
使用面向对象的编程语言的好处就是,虽然没有女朋友,但是仍然可以new对象出来。Java是面向对象的编程语言,我们天天都在使用java来new对象,但估计很少有人知道new出来的对象到底长的什么样子,是美是丑到底符不符合我们的要去?
程序那些事
2020/07/07
9890
PHPCMS开启sphinx搜索结果永远都相同
配置好sphinx,并在后台开启后,无论搜索什么关键字,每次搜索结果都是顺序的把我所有的文章列出来。 我是按照官方提供的sphinx配置文件配置的,用的是centos系统,在终端执行时能够返回搜索内容,就是在phpcms程序中有问题 热心网友的回答 程序版本 PHPCMS V9正式版utf-8 把phpcmsmodulessearchclassessearch_interface.class.php 文件做如下修改
李维亮
2021/07/09
7790
【Oracle】-【COMMIT对索引的影响】-从trace看COMMIT对索引的影响
之前看过老杨http://yangtingkun.itpub.net/post/468/231000的一篇文章,讲述了INSERT操作对全文索引无操作,但DELETE时为了防止删除的数据仍能通过索引的ROWID访问产生的错误,此时会进行索引的删除操作,因此大批量的DELETE-COMMIT就会耗时,甚至导致数据库挂起。
bisal
2019/01/29
7160
使用索引拆分(Split)和索引收缩(shrink )对Elasticsearch进行优化
在Elasticsearch集群部署的初期我们可能评估不到位,导致分配的主分片数量太少,单分片的数据量太大,导致搜索时性能下降,这时我们可以使用Elasticsearch提供的Split功能对当前的分片进行拆分,拆分到具有更多主分片的新索引。
MCNU云原生
2023/03/17
1.7K0
使用索引拆分(Split)和索引收缩(shrink )对Elasticsearch进行优化
list去除相同String、对象元素
一、当相同元素为String时 方法一 /** * List去重 */ private List<String> removeDuplicate(List<String> list) { LinkedHashSet<String> set = new LinkedHashSet<String>(list.size()); set.addAll(list); list.clear(); list.addAll(
崔笑颜
2020/06/08
8100
让所有代码都经过检查
今天谈论 DevOps 这个话题,所以要先来看下代码检查在DevOps中的位置。下面这张图来自于乔梁老师《持续交付》那本书,一个简单的部署流水线示意图,简化表示了软件开发从代码提交、编译构建、代码检查到各种测试最后发布到用户手中的一个自动化过程。
DevOps时代
2018/12/13
8.2K1
让所有代码都经过检查

相似问题

创建对所有对象都相同的属性

231

数组对象所有索引都具有相同的值( java )。

13

所有对象都具有相同的名称

10

Array.fill重复给出相同的对象。为什么?

10

比较几乎所有字段都相同的对象

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文