更新对象数组而不从另一个对象添加新属性

Update object array without adding new properties from another object

是否可以仅更新一个对象的现有 属性 值而不从另一个对象添加新属性?

这是我的例子。

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"}

我不想在我的表单对象上添加出生日期或任何新的 属性。

不确定这是否是您想要的,希望对您有所帮助

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);

仅在传播中添加所需的键而不是整个对象

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

遍历 form 中的所有键并使用 Object.assignspread 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);