gpt4 book ai didi

javascript - 将对象限制为某些属性的更好方法

转载 作者:行者123 更新时间:2023-11-30 10:26:59 29 4
gpt4 key购买 nike

假设我有一个对象:

obj =
foo: 'foo'
bar: 'bar'
// ... and lots of other stuff ...
// ... these values vary, and are not actually hard coded ...

我想创建该对象的副本,其中其属性的一个子集。

obj2 =
foo: obj.foo
bar: obj.bar
// *doesn't* copy any other attributes from `obj`

有没有更惯用的方法来做到这一点?有点像

obj2 = copyOnly obj, ['foo', 'bar']

我的意思是,当然,我可以自己编写 copyOnly,但我正在寻找执行此操作的惯用方法,而不是自制方法。对于这种情况,有没有可以推荐的成语?

最佳答案

我不会将其描述为比自己编写更惯用,但是 lodash(下一代 underscore)有一个 pick 函数

http://lodash.com/docs#pick创建由指定属性组成的对象的浅表克隆。属性名称可以指定为单个参数或属性名称数组。

它还有一个省略

__ = require 'lodash'
__.pick(obj,['foo','bar'])

但是用很多 Coffee 习语写出等价物也很容易

pick = (obj, keys, obj2={}) ->
obj2[key] = value for own key, value of obj when key in keys
obj2

或者如果你喜欢在键上循环

pick = (obj, keys, obj2={}) ->
obj2[key] = obj[key] for key in keys when obj[key]?
obj2

关于javascript - 将对象限制为某些属性的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19146319/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com