我知道这个现有的问题,但我只对普通的javascript解决方案感兴趣(没有像lodash这样的外部库).
什么是最干净的方式(包括所有ES6的善良和超越 - 像对象休息和传播等)从javascript中获取具有来自另一个对象的道具子集的对象?
可以说,我要挑foo,bar和baz从source对象.我目前有两个解决方案,我不喜欢它们:
1.
const result = {
foo: source.foo,
bar: source.bar,
baz: source.baz
};
Run Code Online (Sandbox Code Playgroud)
2.
const { foo, bar, baz } = source;
const target = { foo, bar, baz };
Run Code Online (Sandbox Code Playgroud)
第二个是较短但是它用一些变量污染了当前的执行范围,并且它们的列表无论如何都必须写入两次.
PS.我也不想Object.prototype用一些辅助方法扩充或调用一些自定义函数来实现这一点.
如果您的对象包含许多您需要的属性,以及少量您不需要的属性,则可以使用对象剩余语法:
const source = { foo: 1, bar: 2, baz: 3, whatever: 4 };
const { whatever, ...target } = source;
console.log(target);Run Code Online (Sandbox Code Playgroud)
注意- 对象剩余是 ECMAScript 的第 3 阶段提案,需要一个转译器(带有对象剩余扩展变换的babel)。
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |