Ramda:将键值数组转换为对象

问题描述 投票:0回答:1

我正在使用Ramda按键对归一化的模型对象进行排序。首先,我将转换为键值对(等于Object.entries),并使用R.head(成对时为key值)按第一个值排序]

[我想将结果对的排序数组转换为对象数组-在示例代码中,我使用的是ES6 + maparray destructuring

const data = {
  2: {name: 'two'},
  1: {name: 'one'}
}

const sortByKey = R.compose(R.sortBy(R.head), R.toPairs);
const sortedPairs = sortByKey(data)
console.log(sortedPairs)
// [["1",{"name":"one"}],["2",{"name":"two"}]]

const objs = sortedPairs.map(([key, value]) => {
  return {[key]: value}
})
console.log(objs)
// [{"1":{"name":"one"}},{"2":{"name":"two"}}]

我找不到Ramda函数的部分是

const objs = sortedPairs.map(([key, value]) => {
  return {[key]: value}
})
javascript ramda.js
1个回答
0
投票

您可以将R.map与应用的R.objOf一起使用,以将成对的数组([键,值])转换为数组对象

const { compose, map, apply, objOf, sortBy, head, toPairs } = R

const sortByKey = R.compose(R.sortBy(R.head), R.toPairs)
const arrayFromPairs = map(apply(objOf))

const data = {
  2: {name: 'two'},
  1: {name: 'one'}
}

const result = arrayFromPairs(sortByKey(data))

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.