js如何为对象指定属性快捷赋值?

发布于 2022-09-12 13:56:02 字数 300 浏览 16 评论 0

场景:在web应用中做编辑功能的时候,往往会先调用一个详情接口,然后赋值给model,最后点击保存,但是我们编辑时往往可能属性很少,但是详情接口返回的数据比较多,如果我们通过Object.assign({}, this.formData, res) 来赋值,会导致 this.formData有很多不必要的属性,如果不这样赋值,就需要写很多代码为一个个属性赋值,有没有好一点的办法,既能够方便为对象属性赋值,又能不污染原始对象呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一场信仰旅途 2022-09-19 13:56:02
const result = {}
for(let key of Object.keys(this.formData)){
    result[key] = res[key] || this.formData[key];//(这里要注意深浅拷贝)
}
return result;
一袭水袖舞倾城 2022-09-19 13:56:02

首先,如果是表单数据,一般不应该有嵌套结构,如果有嵌套对象,则需要考虑深拷贝。在不考虑嵌套的情况下,可以简单的写个patch函数来修改对象值

function patchValue(target, values) {
  Object.keys(target).forEach(k => {
    if (values[k] !== undefined) { // 此处可以调整patch逻辑
      target[k] = values[k]
    }
  })
}

const res = { a: 1, b: 2, c: 3 }
patchValue(res, { a: 11, c: null })
// res: {a: 11, b: 2, c: null}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文