JS не присваивает объект

204
23 февраля 2018, 19:42

Уже 2 часа сижу с этим багом, хотя он очень банальный.

        let aa = this.state.containers.map((obj, idx) => {
            if(obj.mainItem !== null) {
                print('____________________');
                print(newItems[idx]);
                obj.mainItem.content = newItems[idx];
                print(obj.mainItem.content);
            }
            if(obj.mainItem !== null) {
                print(obj.mainItem);
            }
            print('______________________');
            return obj
        });

Он присваивает последний элемент массива newItems, притом, если заменить в дебаге print(obj.mainItem); на print(obj.mainItem.content); (во втором if) выводит правильно:

если совместить print(obj.mainItem); print(obj.mainItem.content); получаем: От выводит правильное значение поля, которое занято , почему-то, другим объектом

Пробовал делать через for in, просто for, ничего не помогает

Answer 1

Большое спасибо @AlexeyTen, проблема решилась так:

obj.mainItem = JSON.parse(JSON.stringify(obj.mainItem));
obj = JSON.parse(JSON.stringify(obj));
READ ALSO