使用 Ramda 将对象数组转换为普通对象

新手上路,请多包涵

如何将对象数组转换为普通对象?其中数组的每一项都是一个只有一个键值对的对象,并且该键的名称未知。

我有这个

const arrayOfObject = [
    {KEY_A: 'asfas'},
    {KEY_B: 'asas' }
]
let result = {}
const each = R.forEach((item) => {
   const key = R.keys(item)[0]
    result[key] = item[key]
})
return result

但我不喜欢该解决方案,因为 forEach 使用的是全局变量 result 我不确定如何避免此处的副作用。

原文由 matiasfha 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 586
2 个回答

Ramda 为此内置了一个函数 mergeAll

 const arrayOfObject = [
     {KEY_A: 'asfas'}
    ,{KEY_B: 'asas' }
];

R.mergeAll(arrayOfObject);
//=> {"KEY_A": "asfas", "KEY_B": "asas"}

原文由 Scott Sauyet 发布,翻译遵循 CC BY-SA 3.0 许可协议

由于每个人都已经在使用 ES6( const ),因此有一个很好的纯 ES6 解决方案:

 const arrayOfObject = [
  {KEY_A: 'asfas'},
  {KEY_B: 'asas'}
];

Object.assign({}, ...arrayOfObject);
//=> {KEY_A: "asfas", KEY_B: "asas"}

Object.assing 将提供的对象合并到第一个, ... 用于将数组扩展到参数列表。

原文由 jJ‘ 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题