Using 对象剩余解构 https://github.com/sebmarkbage/ecmascript-rest-spread/blob/master/Rest.md将对象的属性列入黑名单很简单,如下例所示:
const original = {
a: 1,
b: 2,
c: 3,
evil: "evil",
ugly: "ugly",
};
const { evil, ugly, ...sanitized } = original;
console.log(sanitized); // prints { a: 1, b: 2, c: 3 }
我想知道是否存在类似的简洁方法来执行相同的操作,但使用属性白名单(在示例中:{ a, b, c }
)。很多时候,我必须将可用属性的子集转换为 JSON,这样的功能将使代码更具可读性和更安全。
我发现了一个类似的问题,但它不是完全相同的问题:在 ES6/ES2015 中是否有一种更简洁的方法将一个对象的属性映射到另一个对象? https://stackoverflow.com/questions/35471531/is-there-a-more-terse-way-to-map-properties-of-one-object-to-another-in-es6-es20
Edit:遗憾的是,下一个代码不起作用,因为它返回原始对象而不是过滤后的对象。
const sanitized = {a, b, c} = original;
// sanitized === original