глубокое клонирование массива

173
26 марта 2019, 22:30

Дан массив arr['1','2',['3',{number:'4'}],'5'] нужно сделать его клон без использования методов slice и т.д. Написал пока только для массива

 var myArr =['1','2',['3',{number:'4'}],'5'];
var arrClone=[];
for(var i=0;i<myArr.length;i++){
if(typeof(myArr[i])==='object')
{
    var arr=[];
    for(var j=0;j<myArr[i].length;j++){
        arr[j]=myArr[i][j];
    }

    arrClone[i]=arr;
}else { arrClone[i]=myArr[i]}
}
Answer 1

function copyObject(obj){ 
  var copy = (obj instanceof Array)? [] : {}; 
    for (var key in obj) { 
      if(typeof(obj[key]) === 'object'){ 
        copy[key] = copyObject(obj[key]); 
      } else { 
        copy[key] = obj[key]; 
      } 
         
    } 
    return copy; 
} 
 
var myArr =['1','2',['3',{number:'4'}],'5'], 
    newArr = copyObject(myArr); 
 
 
myArr[0] = 3; 
myArr[2][1].number = 9999; 
 
console.log(myArr, newArr);

В результате такого копирования получились две полностью независимые переменные, в каждой из которых хранится массив.

UPD: Обновил код.

READ ALSO
Unhandled rejection TypeError: Cannot read property &#39;tblUsers&#39; of undefined

Unhandled rejection TypeError: Cannot read property 'tblUsers' of undefined

Всем привет, не могу понять как задать поле у классаИспользую node v10

140
помогите пожалуйста с owl-carousel2

помогите пожалуйста с owl-carousel2

Помогите с помощью плагина owl-carousel2 сделать autoplay через 3 секунды

163
Сумма чисел массива

Сумма чисел массива

Задачи: есть две переменные "a" и "b" необходимо произвести сумму чисел от переменной "а" до переменной "b"

145
Как вызвать magnific popup без клика?

Как вызвать magnific popup без клика?

Как можно вызвать Magnific Popup без клика на кнопку? Я нашел паблик методы в документации, но не могу разобраться как реализовать

173