Обновить массив объектов без добавления новых свойств из другого объекта - PullRequest
0 голосов
/ 16 июня 2020

Можно ли обновить только существующие значения свойств объекта без добавления новых свойств из другого объекта?

Вот мой пример.

form = {name: '',email: ''};
data = {name: 'sample', email: 'sample@gmail.com', datofbirth: '6/2/1990' };

form = {...form, ...data};

console.log(form);

Результат:

{"name":"sample","email":"sample@gmail.com","datofbirth":"6/2/1990"}

Ожидаемый результат:

{"name":"sample","email":"sample@gmail.com"}

Я не хочу, чтобы дата рождения или какое-либо новое свойство добавлялось в мой объект формы.

Ответы [ 3 ]

1 голос
/ 16 июня 2020

Не уверен, что это то, что вам нужно, надеюсь, это поможет

const form = { name: '', email: '' };
const data = {
    name: 'sample',
    email: 'sample@gmail.com',
    datofbirth: '6/2/1990',
};
Object.keys(form).forEach(key => {
    if (data.hasOwnProperty(key)) {
        form[key] = data[key];
    }
});
console.log(form);
0 голосов
/ 16 июня 2020

Перебрать все ключи в form и создать новый объект, используя Object.assign и spread syntax.

const form = {name: '',email: ''},
      data = {name: 'sample', email: 'sample@gmail.com', datofbirth: '6/2/1990' },
      result = Object.assign(...Object.keys(form).map(k => ({[k] : data[k]})));
console.log(result);
0 голосов
/ 16 июня 2020

Добавляйте только нужные вам ключи в разворот, а не весь объект

form = { ...form, name: data.name, email: data.email };
...