2015-07-23 3 views
0

У меня два массива одинаковых объектов,Как избежать отражения двух массивов, которые содержат одни и те же объекты?

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; 
    } 
} 

Здесь я Изменение значения ноты tempHistory массива с индексом 0, но я получаю отраженный ответ на callHistory также.

После окончания цикла.

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"}]; 

Как это отражается и есть все равно, чтобы остановить такое отражение.

ответ

0

Вам необходимо клонировать объект How do I correctly clone a JavaScript object?:

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);

Смежные вопросы