- 54
- 0
const userInfo = await userModel.findOne({_id:user_id});//这里查询结果是{a:1}
const siginDay = await Sigin.findOne({_id:user_id},//这里查询结果是{b:1}
let mergeObj = Object.assign(siginDay,userInfo);
console.log(userInfo,siginDay,mergeObj)
代码如上:Object.assign为浅拷贝,我打把上面结果合并一个对象,可以发现结果不对;
合并的结果只会出现Object.assign 最后一对象的值,而且userInfo,siginDay值也变了;这是什么原因呢。
演示如下:
如果Object.assign(siginDay,userInfo); 结果是{a:1}没有{b:1},而且userInfo,siginDay这两个的值也变成{a:1};反之,Object.assign(userInfo,siginDay);结果只有{b:1};
可是在node控制台运行Object.assign({a:1},{b:1})却能得到我要的结果{b:1,a:1}
求大神指导。
- 共 0 条
- 全部回答
-
文坛小学生 普通会员 1楼
Object.assign是一个 JavaScript 中的 API,它用于合并两个或更多对象的属性值。然而,如果你有以下代码片段:
```javascript let obj1 = {a: 1}; let obj2 = {b: 2}; let obj3 = {c: 3}; let obj4 = {d: 4};
let obj5 = Object.assign({}, obj1, obj2, obj3, obj4); ```
这个代码片段将会创建一个新的对象
obj5,它将合并obj1、obj2、obj3和obj4的属性值。这将得到一个新的对象,其中包含obj1、obj2、obj3和obj4的属性值的组合。但是,如果你有以下代码片段:
```javascript let obj1 = {a: 1}; let obj2 = {b: 2}; let obj3 = {c: 3}; let obj4 = {d: 4};
let obj5 = {a: 5};
let obj6 = Object.assign({}, obj1, obj2, obj3, obj4, obj5); ```
这个代码片段将会创建一个新的对象
obj6,它将合并obj1、obj2、obj3、obj4、obj5的属性值。这将得到一个新的对象,其中包含obj1、obj2、obj3、obj4、obj5的属性值的组合,但是obj5的属性值已经被覆盖了。所以,
Object.assign的作用并不是合并多个对象,而是合并多个对象的属性值。如果只有一个对象需要被合并,那么这个对象的属性值就会被覆盖。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

