Такое поведение ожидается, так как в JavaScript объекты передаются по ссылке, а не примитивах, где они передаются по значению.
Если вы выполните глубокое клонирование массива, вы увидите, что он печатает вконсоль просто отлично ..
var createdComponents;
createdComponents = {
"switches":[],
"SA":[]
};
//Adding duplicates elements to my array
createdComponents.switches.push("SW1");
createdComponents.SA.push("SA1");
createdComponents.switches.push("SW1");
createdComponents.SA.push("SA1");
//Display object with duplicates
console.log("Before:------------");
console.log(JSON.parse(JSON.stringify(createdComponents)));
//Removing duplicates
createdComponents.switches = removeDuplicates(createdComponents.switches);
createdComponents.SA = removeDuplicates(createdComponents.SA);
//Display new object
console.log("After duplicates being removed:------------");
console.log(createdComponents);
function removeDuplicates(arr){
let unique_array = []
for(let i = 0;i < arr.length; i++){
if(unique_array.indexOf(arr[i]) == -1){
unique_array.push(arr[i])
}
}
return unique_array
}
JSFiddle