gpt4 book ai didi

Javascript 数组在 Pop 循环时插入内部

转载 作者:行者123 更新时间:2023-12-02 07:30:31 26 4
gpt4 key购买 nike

我做了这个jsfiddle而且我无法解释为什么以下不会导致 5 个对象的数组都具有不同的 id 属性:

var arr = ["1", "2", "3", "4", "5"];
var clone = {"id": "0", "name":"Matthew"};
var arrObj = [];

var idArr = [];

while((a=arr.pop()) != null){
clone.id = a;
console.log(clone);
arrObj.push(clone);
}

console.log(arrObj);

我最终得到的是我的控制台中的以下内容:

Object {id: "5", name: "Matthew"} (index):28
Object {id: "4", name: "Matthew"} (index):28
Object {id: "3", name: "Matthew"} (index):28
Object {id: "2", name: "Matthew"} (index):28
Object {id: "1", name: "Matthew"} (index):28

[Object, Object, Object, Object, Object]

当我打开 5 个克隆对象中的每一个时,它们的“id”值都为“1”

这是为什么?

最佳答案

clone 是一个对象。在 javascript 中,对象通过引用传递,因此您不会在每个索引中传递不同的对象。

这是有用的东西

while((a=arr.pop()) != null){
var clone = {"id": a, "name":"Matthew"};
clone.id = a;
arrObj.push(clone);
}

console.log(arrObj);

结果:

Array [
Object {id: "5", name: "Matthew"}
Object {id: "4", name: "Matthew"}
Object {id: "3", name: "Matthew"}
Object {id: "2", name: "Matthew"}
Object {id: "1", name: "Matthew"}
]

关于Javascript 数组在 Pop 循环时插入内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22263630/

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