Копирование через spread-оператор с заменой поля второго уровня

121
20 декабря 2020, 18:50

Всем привет, передо мной стоит задача, которую хочу решить за минимальное число символов, подробнее в коде ниже:

// пусть есть объект
const DATA = {
    name: 'vlad',
    surname: 'Kudashov',
    passport: {
        serial: '4518',
        number: '124202',
        issue: '24022017'
    }
}
// Копирование с заменой полей верхнего уровня
const DATA_changeFirstLevel = {...DATA, surname: 'KudashEv'};
// А вот если хочу копировать с заменой второго уровня
const DATA_changeSecondLevel = {...DATA, {...DATA.passport, serial: '4444'}}
// но так нельзя(((
// можно же вот так, но так не коротко
const DATA_changeCorrectSecondLevel = {...DATA, passport: Object.assign(DATA.passport, {serial: '4444'})}

Хотелось бы найти короткое решение и, возможно, объяснение почему невозможен nested spread оператор

Answer 1

const DATA = { 
    name: 'vlad', 
    surname: 'Kudashov', 
    passport: { 
        serial: '4518', 
        number: '124202', 
        issue: '24022017' 
    } 
} 
 
const DATA_changeSecondLevel = {...DATA, passport: {...DATA.passport, serial: '4444'}} 
 
console.log(DATA_changeSecondLevel);

READ ALSO
Отправка письма через smtp C++

Отправка письма через smtp C++

Искал реализацию для отправки писем через smtp, документации не нашел, пришлось по форумам бродить но нигде ничего дельного не былоНашел тему...

136
База данных в C++ [закрыт]

База данных в C++ [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме

119
Можно ли test_case размещать в циклах?

Можно ли test_case размещать в циклах?

Собственно, есть ли ограничения на размещение TEST_CASE, WHEN, THEN и дрв циклах?

100
Задача с ориентированным графом [дубликат]

Задача с ориентированным графом [дубликат]

Нужно найти и вывести все минимальные циклы в ориентированном графе, который задан матрицей смежности, подскажите оптимальное решения данной...

126