Вы можете использовать Object.entries
, чтобы получить массив парных пар ключ / значение для объекта. Затем filter
массив записей путем включения в массив wantedKeys
. Наконец, создайте объект из выбранных пар, используя Object.fromEntries
.
const o = {a: 1, b: 2, c: 3};
const wantedKeys = ["a", "c"];
const selected = Object.fromEntries(
Object.entries(o)
.filter(([k, v]) => wantedKeys.includes(k))
);
console.log(selected);
Это может быть медленным на больших объектах, поэтому вы можете использовать map
и filter
, чтобы связать сложность с массивом wantedKeys
.
Если вы превращаете это в функцию, нет смысла жестко кодировать объект. Я бы добавил это как параметр:
const pickFromObj = (o, wantedKeys) => Object.fromEntries(
wantedKeys.filter(e => e in o)
.map(e => [e, o[e]])
);
console.log(pickFromObj({a: 1, b: 2, c: 3}, ["a", "c"]));