dmc1989
@dmc1989

Почему данные всегда одинаковые?

Вроде делаю все правильно, но получаю во всех объектах последний элемент data массива:
// data = [{name: {xx: 'sss', xxxx: 'ssss'}}, {'name': 'dsa'}]
// this.field = {name: {value...}, year: {value...}, something: {value...}}

data.forEach(element => {
          let fullField = Object.assign({}, this.field);
          
          for (let field_name in fullField) {
            fullField[field_name].value = element[field_name] || 'NULL';
          }
          
          this.fields.push(fullField);
        });

// this.fields = [name: {value: 'dsa'...}, name: {value: 'dsa'}]
// а должно быть
// this.fields = [name: {value: {xx: 'sss', xxxx: 'ssss'}...}, name: {value: 'dsa'}]


Где я налажал? Заранее спс.
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.assign не выполняет глубокого копирования. Так что просто устанавливать значение value нельзя - это value одних и тех же объектов. Можно перезаписывать объект целиком, замените

fullField[field_name].value = element[field_name] || 'NULL';

на

fullField[field_name] = Object.assign(
  {},
  fullField[field_name],
  { value: element[field_name] || 'NULL' },
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы