我创建了一个包含一些值的对象数组。然后我创建了另一个对象数组并用第一个对象数组对其进行初始化。然后我在第二个数组中推送一个值,控制台记录了两个数组。两个数组具有相同的值。为什么会发生这种情况?我们怎样才能阻止这种情况?
My Code:
var a = { "filters": [] }; // 1st object array
var keyValue = {};
// pushed 2 values in "a" array
keyValue["abc"] = "123";
a.filters.push(keyValue);
keyValue["def"] = "456";
a.filters.push(keyValue);
var b = a; // created another object array & initialized it with "a" array
var keyValue1 = {};
// pushed 1 value in "b" array
keyValue1["ghi"] = "789";
b.filters.push(keyValue1);
console.log(a);
console.log(b);
这将为 a 和 b 打印相同的值。
如何将值推入第二个数组而不更新第一个数组?
作业如var b = a
for a 对象创建一个对象“b”,该对象通常引用(就像指针一样)“a”指向的相同位置。你可能会发现这个link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var有帮助。
但是您可以使用以下命令创建/克隆一个新数组slice方法。var b = a.slice()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)