2015-01-17 3 views
0

Я пытался выяснить, как сделать копию массива объектов JSON, который можно изменить без изменения оригинала. Я вижу много дискуссий относительно объектов, которые передаются как ссылка по умолчанию, но я не понимаю, как избежать этого поведения по умолчанию.Как создать копию массива объектов JSON

Пример jQuery ниже - это не настоящий код, но я думаю, что это иллюстрирует то, что я пытаюсь выполнить. Может ли кто-нибудь помочь мне понять, как закодировать следующий пример, чтобы _copy можно было изменить с помощью _master, оставленного без изменений?

// Master - should never get modified 
_master = [ 
    Object { id=0, name="Charlie", city="Memphis", state="TN" }, 
    Object { id=1, name="Steve", city="Chicago", state="IL" } 
]; 

// Copy of Master that can be modified 
_copy = _master; 

// Modify _copy only - leave _master unmodified 
_copy[0].name = "Charles"; 
+0

JSON не имеет ничего общего с тем, что вы пытаетесь. Это просто объектные литералы. – Brad

+0

Возможный дубликат [Что является наиболее эффективным способом клонирования объекта?] (Http://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-clone-an-object) – Brad

ответ

2

_copy=JSON.parse (JSON.stringify (_master));

быстрый способ сделать это. Кодирование преобразует _master в строковое представление переменной, и синтаксический анализ потребляет его и возвращает его в массив.

Любое соединение ссылочной/памяти прерывается после преобразования переменной в строку.

+1

Спасибо. Это отлично работает для моей проблемы. – rwkiii

3

Вы можете использовать это:

var copyArray = JSON.parse(JSON.stringify(someArray)); 
+0

Ваш ответ идентичен chiliNUT. Хотел бы я пометить вас обоих в качестве ответов. +1 за вашу помощь. Спасибо. – rwkiii

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