gpt4 book ai didi

javascript - 如果我在 JavaScript 中拼接克隆数组,为什么我的原始数组会被拼接?

转载 作者:行者123 更新时间:2023-11-29 10:33:42 24 4
gpt4 key购买 nike

我有以下代码:

 var coords = [
{lat: 39.57904, lng: -8.98094, type: "a"}, // A
{lat: 39.55436, lng: -8.95493, type: "b"}, // B
{lat: 39.56634, lng: -8.95836, type: "c"} // C
];

var travelingOptions = [];

getAllTravelingOptions();

function getAllTravelingOptions(){
coords.forEach((point, pos) => {
let c = coords;
delete c[pos];
console.log(c);
console.log(coords);
});
}

为什么变量 ccoords 总是相同的?如果我在 c 上删除,它会反射(reflect)在 coords 上的操作。这是正常行为吗?

最佳答案

因为c的赋值,得到了数组coords的引用。

coords 的任何更改都会影响 c,直到将新值分配给 c

如果您使用 Array.slice 复制数组,您将获得一个新数组,但具有相同的对象引用。在内部更改一个对象时,您正在更改 c 中具有相同引用的同一对象。

var coords = [
{lat: 39.57904, lng: -8.98094, type: "a"}, // A
{lat: 39.55436, lng: -8.95493, type: "b"}, // B
{lat: 39.56634, lng: -8.95836, type: "c"} // C
],
c = coords.slice();

console.log(c);
coords[1].type = 'foo';
console.log(c);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如果我在 JavaScript 中拼接克隆数组,为什么我的原始数组会被拼接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40534998/

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