【问题标题】:Javascript destructuring to populate existing object [duplicate]Javascript解构以填充现有对象[重复]
【发布时间】:2016-05-17 15:23:29
【问题描述】:

我正在使用 ES6 的 Object destructuring 语法。 我想使用它来填充现有对象。

我有两个对象:

let $scope = {};
let email = { from: 'cyril@so.com', to: 'you@so.com', ... };

我想将一些email 对象属性分配给$scope 对象。

目前,我已经这样做了:

({ from: $scope.from, to: $scope.to } = email);

在我的现实生活用例中,我有两个以上的属性要分配。

那么,您是否知道另一种方法来改进避免重复左侧分配部分中的$scope

【问题讨论】:

  • 呃,哦!发布我的问题只是让我想到了Object.assign() 方法。我想这样做$scope = Object.assign($scope, email); 应该可以解决问题。好吧,好吧,发布问题总是有用的,不是吗? ;)

标签: javascript ecmascript-6 destructuring


【解决方案1】:

你是对的,你可以这样做:

Object.assign($scope, email);

但是,这不是一成不变的,您实际上是在更改 $scope 对象(在您的情况下这很好)。如果您想要一个不可变的操作,请执行以下操作:

$scope = Object.assign({}, $scope, email);

这将返回一个全新的对象。

另外,如果您在转译器中打开了Object Rest Spread 功能,那么您可以这样做:

$scope = { ...$scope, ...email };

这也是不可变的,并在幕后使用Object.assign

【讨论】:

  • 哦,是的,在这种情况下,我没有想到 Object Rest Spread。我会坚持使用 Object.assign,我想还是更“人类可读”。感谢您的回答!
猜你喜欢
  • 2015-08-15
  • 2018-09-04
  • 2016-12-28
  • 2010-12-05
  • 2020-04-11
  • 2015-03-13
  • 2015-06-19
  • 1970-01-01
相关资源
最近更新 更多