На данный вопрос уже ответили:
Никак не могу понять где я допустил ошибку... Я написал функцию, которая должна делать копии объектов/массивов,вот она :
function copy(arr,deep){
if(arr instanceof Object){
var arr1 = {};
}else if(arr instanceof Array){
var arr1 = [];
}else{
return arr;
}
for(let key in arr){
arr1[key] = copy(arr[key],true);
}
if(!deep){
return arr1;
}
}
Она должна копировать массив с 30 объектами, объекты имеют глубину примерно уровня на три(они также имеют и методы). После копирования этого массива, выходит одноуровневый массив с вложенными undefined. Где ошибка?
P. S. Незнаю нужно ли это кому, но вот рабочая версия:
function copy(arr){
if(arr.length){
var arr1 = [];
}else if(typeof arr == "object"){
var arr1 = {};
}else{
return arr;
}
for(let key in arr){
if(typeof arr[key] == "function" || !arr[key].length || typeof arr[key] != "object")
arr1[key] = arr[key];
else
arr1[key] = copy(arr[key]);
}
return arr1;
}
В функции пропущено возвращение результата при deep == true
и первом аргументе, являющимся массивом или объектом.
Еще. Посмотрите на пример кода - что он выводит в консоль.
var a = [];
console.log(typeof a, a instanceof Array, a instanceof Object);
Самый незапарный способ глубокого копирования объектов:
const newObj = JSON.parse( JSON.stringify(obj) );
))
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите, почему не инициализируется select как в документации? Приходится полностью инициализировать Materialize используя костыль
В canvas нарисованы две фигуры, подскажите можно ли обрабатывать событие при наведении мыши на фигуру без использования сторонних библиотек...
Подскажите пожалуйста как вставить субтитры в видео с использованием mediaelementjs?