Давайте предположим, что у меня есть два простых объекта, и я хочу создать третий, который будет объединять их свойства. Это прекрасно работает:
(()=>{
const a1 = {a: 2, b: 3}
const b1 = {a: 100, c: 5}
return {...a1, ...b1}
})()
// { a: 100, b: 3, c: 5 }
Но перестает работать, когда я пытаюсь создать новый объект, полученный из b1, используя .reduce
. Для простоты давайте создадим функцию приведения, которая просто делает поверхностную копию объекта b1:
let r = (()=>{
const a1 = {a: 2, b: 3}
const b1 = {a: 100, c: 5},
b2 = Object.entries(b1).reduce((acc, [key, value])=>Object.defineProperty(acc, key, {value}), {})
console.log(b2) // {a: 100 c: 5}
return {...a1, ...b2}
})()
console.log(r);// { a: 2, b: 3 }
У меня такое ощущение, что в функции .reduce
есть что-то, чего я просто не понимаю. Что я могу сделать, чтобы это исправить?