gpt4 book ai didi

Javascript 对象引用链接到数组中的对象?

转载 作者:数据小太阳 更新时间:2023-10-29 06:03:05 28 4
gpt4 key购买 nike

如果我有一个对象:

var array = [];
var theobject = null;

array.push({song:"The Song", artist:"The Artist"}, {song:"Another Song", artist:"Another Artist"});

我这样做:

for(var i = 0; i < array.length; i++)
if(array[i].song == "The Song") {
theobject = array[i];
break;
}

如果我通过以下方式更改对象:

theobject.song = "Changed Name";

我遇到了问题,尽管我试图将“theobject.song”设置为等于“已更改的名称”,但数组 [0].song 也设置为“已更改的名称”。

我想要的是“theobject.song”变成“Changed Name”,而 array[0].song 仍然是“The Song”。

实现此目标的最佳方法是什么?

最佳答案

您永远不会在循环中获得对您的对象的引用。尝试:

for(var i = 0; i < array.length; i++)
if(array[i].song === "The Song") {
theobject = array[i];
break;
}

这将提供对象的引用,您将能够更改对象的 song 属性。

如果您想使用该对象的副本,则必须进行手动复制。例如

function clone(obj) {
var copy = {};
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) {
copy[attr] = obj[attr];
}
}
return copy;
}

你的循环变成:

for(var i = 0; i < array.length; i++)
if(array[i].song === "The Song") {
theobject = clone(array[i]);
break;
}

关于Javascript 对象引用链接到数组中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510063/

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