Die Zerlegung in dynamisch benannte Variablen ist in JavaScript nicht möglich, wie in dieser Frage diskutiert.
Um Schlüssel dynamisch zu setzen, können Sie die reduce-Funktion ohne Objektmutation wie folgt verwenden:
const getSubset = (obj, ...keys) => keys.reduce((a, c) => ({ ...a, [c]: obj[c] }), {});
const elmo = {
color: 'red',
annoying: true,
height: 'unknown',
meta: { one: '1', two: '2'}
}
const subset = getSubset(elmo, 'color', 'annoying');
console.log(subset)
Sollte beachtet werden, dass bei jeder Iteration ein neues Objekt erstellt wird, anstatt eine einzelne Kopie zu aktualisieren. – mpen
Im Folgenden finden Sie eine Version, die reduce mit einer einzelnen Kopie verwendet (Aktualisierung des an reduce übergebenen anfänglichen Werts).
const getSubset = (obj, ...keys) => keys.reduce((acc, curr) => {
acc[curr] = obj[curr]
return acc
}, {})
const elmo = {
color: 'red',
annoying: true,
height: 'unknown',
meta: { one: '1', two: '2'}
}
const subset = getSubset(elmo, 'annoying', 'height', 'meta');
console.log(subset)