【问题标题】:Make assigning object properties less redundant when there's structural similarities in ES6当 ES6 中存在结构相似性时,减少分配对象属性的冗余
【发布时间】:2016-12-20 17:58:19
【问题描述】:

假设我按如下方式分配对象属性:

d.x += d3.event.dx || 0;
d.y += d3.event.dy || 0;

换句话说,属性的赋值方式是一致的。

有没有一种巧妙的方法来简化这个键值分配? es2015语法没问题。

【问题讨论】:

  • 我不认为你可以比现在更简单
  • @incodeveritas 要求是否包括增加d.xd.y 的现有值?

标签: javascript oop object ecmascript-6


【解决方案1】:

您可以使用Object.keys().forEach()

var d = { x: 3, y: 4 }, d3 = { event: { dx: 1, dy: 2 } };

Object.keys(d3.event).forEach(prop => d[prop[1]] += d3.event[prop] || 0);

console.log(d);

【讨论】:

  • 太丑了!但是,这是一场胜利。我没有投反对票。
【解决方案2】:

您可以使用解构来消除重复的点符号。

const { dx, dy } = d3.event;

【讨论】:

  • const { dx, dy } = d3.event 是否会创建两个额外的变量dxdy
  • 不是额外的变量,但它会创建允许上面的代码这样编写的变量。 d.x += dx
  • “不是附加变量,但会创建变量”dx 不是附加变量吗?
  • 哈哈,我想你是对的。这种说法没有意义。
猜你喜欢
  • 2012-09-18
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
相关资源
最近更新 更多