考虑以下对象:
const obj = {a: 1, b: 2, c: 3, d: 4, e: 5}
是否有一种简单的语法来创建包含以下内容的新对象:
const obj2 = {a, b, d}
我知道下划线& lodash有.pick()
,但我希望有一些我可能不知道的解构技巧。
答案 0 :(得分:6)
ES2015中的简洁单行是
const obj2 = (({a, b, d}) => ({a, b, d}))(obj);
似乎不可能避免{a, b, d}
同义反复,同时保持紧凑。
答案 1 :(得分:4)
您可以分两步完成:
const obj = {a: 1, b: 2, c: 3, d: 4, e: 5};
var {a, b, d} = obj;
const obj2 = {a, b, d};
如果您不想污染范围,
const obj = {a: 1, b: 2, c: 3, d: 4, e: 5};
const obj2 = {};
{
let {a, b, d} = obj;
Object.assign(obj2, {a, b, d});
}
答案 2 :(得分:3)
你可以使用Rest parameters
并创建像这样的自定义选择功能
const obj = {a: 1, b: 2, c: 3, d: 4, e: 5}
function pick(object, ...p) {
return p.reduce((o, e) => {return o[e] = object[e], o}, {});
}
console.log(pick(obj, 'a', 'b', 'd'))