У меня есть массив следующим образомМассив массив объектов ссылки в Javascript
var sample = [{a:1, b: 1, c:1}, {a:1, b: 1, c:1}, {a:1, b: 1, c:1}];
Затем я запускаю следующий код и попробуйте groupsOfItems[0].sample[0].a = 10
, groupsOfItems[0].sample[0].a
, groupsOfItems[1].sample[0].a
и groupsOfItems[2].sample[0].a
переодеться до 10.
Как сделать Я это предотвращаю?
var sample = [{a:1, b: 1, c:1}, {a:1, b: 1, c:1}, {a:1, b: 1, c:1}];
var groupsOfItems = [];
for(let i = 0; i < 10; i++) {
var item = {};
item.sample = _.clone(sample);
groupsOfItems.push(item);
}
groupsOfItems[0].sample[0].a = 10
console.log(groupsOfItems[0].sample[0].a,groupsOfItems[1].sample[0].a,groupsOfItems[2].sample[0].a);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
Я создал для вас фрагмент. Пожалуйста, сделайте это в будущем. Сохраняет много времени при тестировании вашего кода. – mplungjan
Будьте осторожны с клонированием объектов, используя библиотеки (или просто вообще). Если вы вызываете метод на клонированном объекте, метод все равно будет ссылаться на исходный объект и будет изменять исходный объект, а не клонированный объект. –