mat*_*sfh 7 javascript functional-programming ramda.js
如何将对象数组转换为普通对象?其中数组的每个项目都是一个只有一个键的对象:值对,键具有未知名称.
我有这个
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
Run Code Online (Sandbox Code Playgroud)
但我不喜欢这个解决方案,因为forEach它使用的是全局变量result,我不知道如何避免副作用.
Sco*_*yet 17
Ramda有一个内置的功能,mergeAll.
const arrayOfObject = [
{KEY_A: 'asfas'}
,{KEY_B: 'asas' }
];
R.mergeAll(arrayOfObject);
//=> {"KEY_A": "asfas", "KEY_B": "asas"}
Run Code Online (Sandbox Code Playgroud)
由于每个人都在使用ES6(const),因此有一个很好的纯ES6解决方案:
const arrayOfObject = [
{KEY_A: 'asfas'},
{KEY_B: 'asas'}
];
Object.assign({}, ...arrayOfObject);
//=> {KEY_A: "asfas", KEY_B: "asas"}
Run Code Online (Sandbox Code Playgroud)
Object.assing将提供的对象合并到第一个对象,...用于将数组扩展到参数列表.