创建一个子集对象,仅包含现有对象的部分属性。

11

最好的解释是通过示例来说明。以下是在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']) - loganfsmyth
它并不是必需的,但如果有的话会很好。如果我发现自己经常需要它,我会创建一个帮助函数,而不是引入整个lodash库。这个问题特别涉及到本地语法支持——显然问题本身很容易解决。 - Jonah
1
总的来说,我只是想提一下。 - loganfsmyth
1个回答

6

2
我很担心这个。在这个例子中还好,但是当你用长变量名替换ac时会变得啰嗦。 - Jonah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接