繁体   English   中英

Ramda - 将对象数组转换为对象

[英]Ramda - Convert array of objects into object

环顾四周,但找不到答案。

使用ramda是否有更多声明性的方法来做到这ramda

R.reduce((acc, val) => { 
  acc[val.name] = val.value
  return acc
}, {}, fields)

基本上,我正在转换一个如下所示的数组:

[
   { name: "firstName", value: "John" }, 
   { name: "lastName", value: "Doe" }
]

变成一个看起来像这样的对象:

{ firstName: "John", lastName: "Doe" }

将数组映射为[name, value]对的数组,然后使用 R.fromPairs 将其转换为对象:

 const { pipe, fromPairs, map, props } = R const fn = pipe(map(props(['name', 'value'])), fromPairs) const arr = [{ name: "firstName", value: "John" }, {name: "lastName", value: "Doe" }] const result = fn(arr) console.log(result)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js" integrity="sha512-rZHvUXcc1zWKsxm7rJ8lVQuIr1oOmm7cShlvpV0gWf0RvbcJN6x96al/Rp2L2BI4a4ZkT2/YfVe/8YvB2UHzQw==" crossorigin="anonymous"></script>

使用 vanilla JS,您可以通过映射数组、使用解构,然后使用Object.fromEntries()转换为对象来创建对(条目)的数组:

 const fn = arr => Object.fromEntries(arr.map(({ name, value }) => [name, value])) const arr = [{ name: "firstName", value: "John" }, {name: "lastName", value: "Doe" }] const result = fn(arr) console.log(result)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM