gpt4 book ai didi

Javascript 数组按值传递不起作用

转载 作者:行者123 更新时间:2023-12-03 12:22:12 25 4
gpt4 key购买 nike

我有一个对象数组

var obj = {'name': 'John'};
var obj2 = {'name': 'Sam'};
var arr = [];
arr.push(obj);
arr.push(obj2);

现在我创建一个新数组arr2作为

arr2 = arr.slice();

现在如果我更改arr2[0]['name'] = 'David';

那么arr1[0]['name']也变成'David';

arr2 对象值更改时,如何防止 arr 的任何对象值发生更改。

最佳答案

您必须克隆每个对象,而不仅仅是数组:

function cloneObject(obj) {
var result = {};

for (var k in obj) {
if (Object.prototype.hasOwnProperty.call(obj, k)) {
result[k] = obj[k];
}
}

return result;
}

var arr2 = arr.map(cloneObject);
<小时/>

Is there a way we can prevent the objects from changing?

是的,有Object.freeze :

arr.forEach(Object.freeze);

关于Javascript 数组按值传递不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24393459/

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