【发布时间】:2020-07-27 19:44:37
【问题描述】:
不确定我是否想以一种优雅的方式在这里完成太多事情,但假设我有一个对象如下:
const obj = { foo: 'bar', prop: 'str', hi: 'hello' };
然后我有一个要从该对象中删除的属性数组:
const keys = ['prop', 'hi'];
我正在寻找能够不变地获得以下输出的最佳方式:
{ foo: 'bar' }
我正在研究使用解构赋值,但我不知道如何使它与属性数组一起工作,除非它具有静态长度:
({ [keys[0]]: value, [keys[1]]: value, ...output }) = o;
也许有另一种方法来执行上述行但使用映射?
谢谢!
【问题讨论】:
-
“不可变”是指要创建一个具有相同键的新对象,但省略
keys中命名的键吗? -
定义“优雅”。
-
@tao: I know it when I see it
-
他没有要求“一个优雅的解决方案”(“我一看到就知道”有点适用)。他要了“最优雅的”。可量化,它需要定义。
-
哪个最优雅?我想当我看到它时我会知道的。 :-)。不过,更严重的是,在Simple Made Easy 中,Rich Hickey 描述了对代码简单性的合理客观定义。在我看来,简约和优雅是相辅相成的。
标签: javascript arrays object ecmascript-6 immutability