javascript - 从新对象的属性更新对象的属性,但前提是新对象的属性不是未定义的

标签 javascript object properties coffeescript

有人知道一种从新对象上的属性更新对象属性的好方法,但前提是新对象上的那些属性不是未定义的? 我可以这样做(coffeescript):

setProfileData = (data) ->
      _profile.talent_id = if data.id then data.id else _profile.talent_id

      _profile.is_talent = if data.is_talent then data.is_talent else _profile.is_talent

      _profile.is_employer = if data.is_employer then data.is_employer else _profile.is_employer

不过好像有点啰嗦。

此外,data 实际上是一个类(函数),因此 _.extend 并不是真正的选项。

最佳答案

没有 JavaScript 或 CoffeeScript 运算符可以执行此类分配。但是,您可以通过以下方式避免至少一次重复

if data.id then _profile.talent_id = data.id

_profile.talent_id = data.id || _profile.talent_id

您也可以使用existential operator (它确实检查未定义),而不仅仅是错误。

Also the data is actually a class (a function), so _.extend isn't really an option.

extend 在函数对象上也能正常工作。因此,如果您已经在使用下划线或 lodash,那么您绝对应该使用它。

关于javascript - 从新对象的属性更新对象的属性,但前提是新对象的属性不是未定义的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36021279/

相关文章:

javascript - swfobject、FB.ui 回调、AS3 ExternalInterface 和 IE 无法正常工作

javascript - JQuery $.ajax() 使用异步将数据获取到变量中

class - flutter 的语法含义

javascript - 用 Object 包装原始值的结果是什么?

java - 如何在 spring 上下文中注入(inject)外部属性文件

javascript - 基于 Electron-vue 的 Electron 应用中 Vuex 突变的奇怪行为

javascript - 如何禁用基于另一个选择选项的选择选项?

arrays - 连接两个具有相同键的 json 对象

java - 对java属性文件位置感到困惑

java - 从类文件访问属性文件或静态常量是否更快?