首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么当我更改find()返回的值时,原始数组会发生更改

为什么当我更改find()返回的值时,原始数组会发生更改
EN

Stack Overflow用户
提问于 2021-04-13 19:10:24
回答 1查看 31关注 0票数 2
代码语言:javascript
复制
const courses = [
    {'id':101,'name':'Complete Web Dev'},
    {'id':102,'name':'DS and Algo'},
    {'id':103,'name':'React'}
];

let num = courses.find(c=>{
  if(c.id===102)
    return c;
});

num.name="Programming Fundamentals"
console.log(courses);

谁能给我解释一下,当我改变find函数的返回值时,为什么原始数组中的值会发生变化?有没有我遗漏的概念?执行完代码后,我得到了下面提到的输出。

代码语言:javascript
复制
[
  { id: 101, name: 'Complete Web Dev' },
  { id: 102, name: 'Programming Fundamentals' },
  { id: 103, name: 'React' }
]
EN

Stack Overflow用户

发布于 2021-04-13 19:46:18

这是因为您引用的是同一个对象。在JavaScript中,只有primitive值通过值传递。如果你希望它是一个不同的对象,那么你可以复制它。

这样做的一种方法是对对象执行spreading操作,然后再次分配它。

代码语言:javascript
复制
num = {...num}

请记住,传播一个对象是一个浅拷贝,这意味着如果你有一个嵌套的对象,那么它不会被复制,而是被引用。

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

https://stackoverflow.com/questions/67073745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档