Учитывая два объекта с разными, но известными ключами - которые могут быть или не быть установлены - каков хороший способ объединить их в один объект, используя указанные c сочетания клавиш для обоих?
Скажем, например, , obj1
может иметь ключи itemA
, itemB
и itemC
. Другой obj2
может иметь ключи item_a
, item_b
и item_c
и имеет приоритет. Клавиши относятся к тем же окончательным клавишам a
, b
и c
соответственно.
Это то, что я придумал, но оно кажется излишне запутанным.
// Given these objects:
const obj1 = { itemA: 1, itemB: 2, itemC: undefined }
const obj2 = { item_a: undefined, item_b: 20, item_c: 30 }
// Desired result: { a: 1, b: 20, c: 30 }
const filter = obj => Object.fromEntries(
Object.entries(obj).filter(entry => entry[1])
)
const serialized1 = (object =>
({ itemA:a, itemB:b, itemC:c } = object)
&& filter({a, b, c}))(obj1)
const serialized2 = (object =>
({ item_a:a, item_b:b, item_c:c } = object)
&& filter({a, b, c}))(obj2)
const finalObject = { ...serialized1, ...serialized2 }
console.log(finalObject)
// { a: 1, b: 20, c: 30 }
Я грубо пытаюсь создать таблицу ключей для каждого объекта, для которого внешние ключи сопоставляются с моими локальными ключами , которые затем объединяются.
Примечание: Упомянутые имена ключей являются примерами. В действительности это может быть произвольно, например, один из im-dimensions
и img-res
хранится в ключе с именем size
.