gpt4 book ai didi

javascript - 如何重新分配一个对象以便它也改变引用的对象?

转载 作者:行者123 更新时间:2023-11-28 17:31:51 25 4
gpt4 key购买 nike

假设我有一个对象数组:

var people = [
{name: "Jack", height: 180},
{name: "Marry", height: 170},
{name: "Susan", height: 162},
]

如果我选择第一个人并像这样改变高度:

var jack = people[0];     
jack.height = 163;

然后此更改也会反射(reflect)在数组中的对象中,如下所示:

people = [
{name: "Jack", height: 163},
{name: "Marry", height: 170},
{name: "Susan", height: 162},
]

但是,如果我像这样重新分配对象

 jack = {name: "Jack the developer", height: 163}

数组没有改变:

people = [
{name: "Jack", height: 163},
{name: "Marry", height: 170},
{name: "Susan", height: 162},
]

我应该如何分配jack以便它改变引用?

最佳答案

按照您的方式,您可以使用 Object.assign() 进行操作

演示

const arr=[
{name: "Jack", height: 163},
{name: "Marry", height: 170},
{name: "Susan", height: 162},
] ,
jack = {name: "Jack the developer", height: 163};

Object.assign(arr[0],jack);

console.log(arr);
.as-console-wrapper {max-height: 100% !important;top: 0;}

<小时/>

您还可以使用find数组的方法并使用 Object.assign() 合并新值.

演示

const arr=[
{name: "Jack", height: 163},
{name: "Marry", height: 170},
{name: "Susan", height: 162},
] ,
jack = {name: "Jack the developer", height: 163};

let result = arr.find(({name})=>name=="Jack");

if(result){
Object.assign(result,jack);
};

console.log(arr);
.as-console-wrapper {max-height: 100% !important;top: 0;}

关于javascript - 如何重新分配一个对象以便它也改变引用的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50178894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com