【问题标题】:Update object array without adding new properties from another object更新对象数组而不添加来自另一个对象的新属性
【发布时间】:2020-06-16 03:03:36
【问题描述】:

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

这是我的例子。

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

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

【问题讨论】:

    标签: javascript spread


    【解决方案1】:

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

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

    【讨论】:

    • 短一点:Object.keys(form).map(key=> form[key] = data[key]);
    【解决方案2】:

    只在传播中添加您想要的键而不是整个对象

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-10
        • 2020-04-06
        • 2012-09-14
        • 2017-10-13
        • 1970-01-01
        • 2010-09-11
        • 2023-03-18
        • 1970-01-01
        相关资源
        最近更新 更多