gpt4 book ai didi

javascript 重复对象错误

转载 作者:行者123 更新时间:2023-11-28 07:27:10 25 4
gpt4 key购买 nike

所以我有一个对象数组的数组,并希望将该数组导出到另一个数组以在将来的函数中使用,但问题是在 for (对于每个数组)上,第一次运行进展顺利,但在第一次运行之后它将相同的内容添加到过去的运行中,例如,如果我有两个具有不同内容的数组并执行 for 函数,则第一个数组与第二个数组相同。

这是代码:

 var mark = [];
//defult
var x_mark = { c_mark_desc_col:[], c_mark_col: null, c_mark_col_image: null,
c_mark_action: "click", c_mark_origin:[0,0], c_mark_col_valor: false,
c_mark_style: [null]
//,c_cluster: cluster[0]
};
for (var i = 0; i < extras.marks.length; i++) {

mark[i] = x_mark;
if(!(extras.marks[i].mark_desc_col === "" || typeof extras.marks[i].mark_desc_col=== "undefined" || extras.marks[i].mark_desc_col=== null))
mark[i].c_mark_desc_col = extras.marks[i].mark_desc_col;
if(!(extras.marks[i].mark_col === "" || typeof extras.marks[i].mark_col=== "undefined" || extras.marks[i].mark_col=== null))
mark[i].c_mark_col = extras.marks[i].mark_col;
if(!(extras.marks[i].mark_col_image === "" || typeof extras.marks[i].mark_col_image=== "undefined" || extras.marks[i].mark_col_image=== null))
mark[i].c_mark_col_image = extras.marks[i].mark_col_image;
if(!(extras.marks[i].mark_action === "" || typeof extras.marks[i].mark_action=== "undefined" || extras.marks[i].mark_action=== null))
mark[i].c_mark_action = extras.marks[i].mark_action;
if(!(extras.marks[i].mark_origin === "" || typeof extras.marks[i].mark_origin=== "undefined" || extras.marks[i].mark_origin=== null))
mark[i].c_mark_origin = extras.marks[i].mark_origin;
if(!(extras.marks[i].mark_col_valor === "" || typeof extras.marks[i].mark_col_valor=== "undefined" || extras.marks[i].mark_col_valor=== null))
mark[i].c_mark_col_valor = extras.marks[i].mark_col_valor;
if(!(extras.marks[i].mark_style === "" || typeof extras.marks[i].mark_style=== "undefined" || extras.marks[i].mark_style=== null))
mark[i].c_mark_style = extras.marks[i].mark_style;
}
alert("outside of 'for' posição 0 antes " + extras.marks[0].mark_col + " depois " + mark[0].c_mark_col);
alert("outside of 'for' posição 1 antes " +extras.marks[1].mark_col + " depois " + mark[1].c_mark_col);
}

最佳答案

那是因为使用:

mark[i] = x_mark;

您正在引用数组中的 x_mark 变量,而不是将其复制/克隆为模型,因此每个更改都会引用原始对象 x_mark

尝试克隆它,而不是使用:

mark[i]=JSON.parse(JSON.stringify(x_mark));

相关:How do I correctly clone a JavaScript object?

关于javascript 重复对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29514181/

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