[英]How to avoid reflection of two array which holds the same objects?
I'm having two arrays of same objects, 我有两个相同对象的数组,
var callHistory = [{"CallId":1,"Note":"abcdefghijklmnop"}, {"CallId":2,"Note":"123343"}, {"CallId":3,"Note":"abc123"}];
var tempHistory = [{"CallId":1,"Note":"abcdefghijklmnop"}, {"CallId":2,"Note":"123343"}, {"CallId":3,"Note":"abc123"}];
for(var i = 0; i < tempHistory .length; i++)
{
var callNote = tempHistory [i]["Note"];
if(callNote.length > 6)
{
callNote = callNote.slice(0, 5);
tempHistory [i]["Note"] = callNote;
}
}
Here i'm changing the Note value of tempHistory array of index 0, but i'm getting the reflected response on callHistory also. 在这里,我正在更改索引为0的tempHistory数组的Note值,但是我也在callHistory上得到了反映的响应。
After the end of for loop. for循环结束后。
callHistory = [{"CallId":1,"Note":"abcdef"}, {"CallId":2,"Note":"123343"}, {"CallId":3,"Note":"abc123"}];
tempHistory = [{"CallId":1,"Note":"abcdef"}, {"CallId":2,"Note":"123343"}, {"CallId":3,"Note":"abc123"}];
How it is getting reflected and is there anyway to stop those kind reflection. 它是如何得到反映的,并且无论如何都可以阻止这种反映。
You need to clone the object How do I correctly clone a JavaScript object? 您需要克隆对象如何正确克隆JavaScript对象? :
:
function clone(obj) { if (null == obj || "object" != typeof obj) return obj; var copy = obj.constructor(); for (var attr in obj) { if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr]; } return copy; } var callHistory = [{"CallId":1,"Note":"abcdefghijklmnop"}, {"CallId":2,"Note":"123343"}, {"CallId":3,"Note":"abc123"}]; var tempHistory = [{"CallId":1,"Note":"abcdefghijklmnop"}, {"CallId":2,"Note":"123343"}, {"CallId":3,"Note":"abc123"}]; for(var i = 0; i < tempHistory .length; i++) { var callNote = clone(tempHistory [i]["Note"]); if(callNote.length > 6) { callNote = callNote.slice(0, 5); tempHistory [i]["Note"] = callNote; } } console.log(callHistory); console.log(tempHistory);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.