@mars1311

Как исправить дублирование значений объектов в массиве (Javascript)?

comments_object.author=author;
comments_object.comment=comment;

Здесь в объект добавляются значения полей, при выводе console.log при нажатии в первый раз на кнопку они добавляются в массив как надо - т.е созданный объект в массиве. Но когда я нажимаю на кнопку 2 раз: 1 объект и 2 объект становятся одинаково равны значениям 2 объекта, так же и в следующие разы - при 3 нажатии на блок - в массиве все объекты равны значениям 3 объекта и так далее, то есть происходит копирование всех занесенных объектов на последний.
5cd7868c0608e555945907.png
let comments_array=[];
let comments_object={};
let lc_comments=[];
$('body').on( 'click', '#comment-btn', function( event ) {

  let _this= $(this);
  let comment_id = _this.attr( 'data-posts' );
  let comment=$('#comment-field'+comment_id).val();

  let current_user=get_data('user_data');
  let author=current_user.email;

  let right_id=comment_id-1;
  
  comments_object.author=author;
  comments_object.comment=comment;
  
  comments_array.push(comments_object);
  console.log(comments_array);
  • Вопрос задан
  • 299 просмотров
Решения вопроса 1
SnyMaster
@SnyMaster
Будет работа пишите...
Дело в том что переменные хранят не сам объект, а ссылку на него. таким образом, Вы меняете значения в одном и том же объекте и добавляете его несколько раз в массив, т.е. ссылку на объект в массив.
Эта ссылка поможет разобраться https://learn.javascript.ru/object-reference
Для добавления в массив используйте такой код:
comments_array.push({
   author:author,
   comment:comment
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы