2016-11-05 3 views
1

У меня есть этот массив объекта obj.arr в javascript. Я назначил его новому объекту.Назначение объекта javascript для нового объекта как копии

var obj_arr_new = obj.arr; 

Проблема заключается в том, что, когда я изменить obj_arr_new, obj.arr модифицируется, а также. Мне этого не надо. Как я могу сделать obj_arr_new копией obj.arr, а когда я изменяю obj_arr_new, obj.arr нетронутой?

Я использую node.js v6. Я открыт для использования любого модуля node.js. Кто-то сказал, что lodash может справиться с этой задачей. Ответ на использование lodash был бы полезен.

+0

Вы проводили какие-либо исследования? Об этом уже много, и документация lodash находится в режиме онлайн. – 4castle

+1

Возможный дубликат [Как правильно клонировать объект JavaScript?] (Http://stackoverflow.com/questions/728360/how-do-i-correctly-clone-a-javascript-object) – 4castle

+0

Я сделал, но были несколько методов в lodash, которые, похоже, соответствуют законопроекту, но я точно не знаю, какой именно. Извините, я довольно медленный. – user781486

ответ

4

Для этой цели у Lodash действительно есть _.cloneDeep(value).

var obj_arr_new = _.cloneDeep(obj.arr); 

Это будет рекурсивно клонировать «массивы, буферы массива, логические, дата объекты, карты, числа, объекты объектов, регулярные выражения, наборы, строки, символы, и напечатал массивы», так что модифицирующие биты клона Безразлично» t влияет на оригинал, или наоборот.

Documentation

2

Я, как правило, чтобы создать копию с помощью:

var copiedObject = JSON.parse(JSON.stringify(originalObject)); 

это работает только для объектов JSONable, но если вы имеете дело со строками, массивами и т.д., то его тонкой, т.е. нет, если у вас есть функции как дети объекта, который вы копируете.

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