【问题标题】:Create a subset object, consisting of only some of the properties of an existing object [duplicate]创建一个子集对象,仅包含现有对象的一些属性[重复]
【发布时间】:2015-09-08 10:05:47
【问题描述】:

这最好通过例子来解释。以下在 es6 中用于创建由现有对象的一些键组成的对象:

var o = {a:1, b: 2, c: 3}
var {a, c} = o
var subsetObj = {a, c} // will be: {a:1, c:3}

这里有两个缺点:

  1. 创建所需的子集对象需要两个语句和两行代码
  2. 我们不得不通过创建中间变量 ac 来污染局部变量范围,这些变量在本地不需要,除非作为创建子集对象的一种方式。

有没有办法在一个语句中完成同样的事情,而不引入不必要的本地人ac

【问题讨论】:

  • 为什么需要特殊的语法?为什么不使用 lodash 或其他东西,例如var o = {a:1, b: 2, c: 3}; _.pick(o, ['a', 'c'])
  • 它不需要它,它会很好。如果我发现自己非常需要它,我只会创建一个辅助函数,而不是引入所有的 lodash。这个问题专门针对原生语法支持——问题本身显然很容易解决。
  • 完全,只是想提一下。

标签: javascript ecmascript-6


【解决方案1】:

对此没有特定的语法。你可以继续做:

var subsetObj = {a: o.a, c: o.c};

如果您有更多属性或可变数量的属性,请创建一个辅助函数。

相关:Is it possible to destructure onto an existing object? (Javascript ES6)

【讨论】:

  • 我害怕这个。在这个例子中很好,但是当你用长变量名替换 ac 时会变得冗长。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-06
  • 2015-06-07
  • 2021-12-27
  • 2021-11-06
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
相关资源
最近更新 更多