编写一个纯函数从内部属性返回另一个对象的一个​​对象?

Mat*_*ood 7 javascript arrays reduce transformation

做一些数据转换练习并陷入困境.我有一个对象,我想转换为from (starting)- > to (expected ending)输出如下所述.我正在尝试使用Array.reduceObject.assign保持输出纯净.但我无法让它正常工作.

/**
 *  from (starting): {topic: {id: 2}, products: {id: 3}}
 *  to (expected ending):   {topic: 2, products: 3}
 */

const starting = {topic: {id: 2}, products: {id: 3}};

const ending = Object.keys(starting).reduce((p, key) => {
  if(!p[key]) p[key] = key;
  return Object.assign(p[key], starting[key].id);  
}, {})
Run Code Online (Sandbox Code Playgroud)

Kev*_*Bot 7

您可以使用reduce,只需记住在每次迭代后返回起始对象.

function convert(start) {
  return Object.keys(starting).reduce((o, key) => {
      o[key] = start[key].id;
      return o;
    }, {});
}

const starting = {topic: {id: 2}, products: {id: 3}};
console.log(convert(starting));
Run Code Online (Sandbox Code Playgroud)