Javascript 是否有更好/更短的模式来设置对象的子集';另一个对象上的属性?

Javascript 是否有更好/更短的模式来设置对象的子集';另一个对象上的属性?,javascript,Javascript,我试图确定是否有更好/更短的方法来获取对象上的属性子集并(仅)将这些属性添加到另一个对象。显然,这不是世界上最重要的事情,但由于我经常做这类事情,所以最好能找到理想的模式 假设我有一个对象,例如 const cheesyRecipes = { cheesyBread: ..., grilledCheeseSandwich: ..., macAndCheese: ..., ... } const cheesyBreadRecipes = {}; // do som

我试图确定是否有更好/更短的方法来获取对象上的属性子集并(仅)将这些属性添加到另一个对象。显然,这不是世界上最重要的事情,但由于我经常做这类事情,所以最好能找到理想的模式

假设我有一个对象,例如

const cheesyRecipes = {
    cheesyBread: ...,
    grilledCheeseSandwich: ...,
    macAndCheese: ...,
    ...
}
const cheesyBreadRecipes = {};
// do something with cheesyRecipes?
cheesyBreadRecipes; // == {cheesyBread, grilledCheeseSandwich}
我想把这个对象的一个子集应用到另一个对象上,例如

const cheesyRecipes = {
    cheesyBread: ...,
    grilledCheeseSandwich: ...,
    macAndCheese: ...,
    ...
}
const cheesyBreadRecipes = {};
// do something with cheesyRecipes?
cheesyBreadRecipes; // == {cheesyBread, grilledCheeseSandwich}
我有几种方法可以做到这一点。我可以走老学校的路

const cheesyRecipesWithBread = [`cheesyBread`, `grilledCheeseSandwhich`];
for(var i = 0; i < cheesyRecipesWithBread.length; i++) {
    const recipeName = cheesyRecipesWithBread[i];
    cheesyBreadRecipes[recipeName] = cheesyRecipes[recipeName];
});
或者,我可以通过使用ES6解构使行数减少一半

const {cheesyBread, grilledCheeseSandwhich} = cheesyRecipes;
Object.apply(cheesyBreadRecipes, {cheesyBread, grilledCheeseSandwhich});

但即使是最后一个,显然是最短的,似乎也违反了干燥原则,在两行上重复每个食谱的名称。所以,我的问题是,有没有什么聪明的方法可以使用解构(或者其他任何方法)将一个对象的属性子集应用到另一个对象上,而不必重复每个属性两次?或者我的最后一个示例是否与它得到的一样好?

如果使用库是可以的,那么pick可能会更短

ver newObj=u2;.pick(oldObj,['cheesyBread','griledcheesesandhich'])


谢谢你的建议,但实际上这似乎要长一些。考虑:
const{cheesyBread,grilledCheeseSandwhich}=CheeserEcipes;apply(cheesyBread-recipes,{cheesyBread,grilledCheeseSandwhich})vs.
const cheesyBreadRecipes=u.pick(CheeserEcipes,['cheesyBread','grilledCheeseSandwhich');对象。应用(cheesyBreadRecipes,cheesyBreadRecipes)(您无法在注释中真正看到它,但如果您将其粘贴到编辑器中,您将看到
拾取的时间更长)。当然,在不违反DRY的前提下,要求两次对象键是更好的。虽然不能100%确定这是否正是您所追求的,但您可以看看好的捕获:这个问题似乎与这个问题相同(他们似乎在这里得出了相同的结论)。我会把我的标记为复制品,谢谢!