Ramda:将键值数组转换为对象
Ramda: convert key value array to object
我正在使用 Ramda
按键对规范化模型对象进行排序。首先,我转换为键|值对(相当于 Object.entries
),然后使用 R.head
按第一个值排序(成对时的 key
值)
我想将生成的排序数组对转换为对象数组 - 在我使用 ES6+ map
和 array 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}
})
您可以使用 R.map 和已应用的 R.objOf 将数组对 ([key, value]) 转换为数组对象
const { compose, map, apply, objOf, sortBy, head, toPairs } = R
const sortByKey = compose(sortBy(head), 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>
您可以使用 compose(fromPairs, of)
从一对创建对象。
const fromPair = compose(fromPairs, of);
fromPair(["a", 1]);
//=> {"a": 1}
const { compose, fromPairs, head, map, of, sortBy, toPairs } = R;
const sortByKey = compose(sortBy(head), toPairs);
const fromPair = compose(fromPairs, of);
const arrayFromPairs = map(fromPair);
const data = {
2: {name: 'two'},
1: {name: 'one'},
};
const sortedPairs = sortByKey(data);
const objs = arrayFromPairs(sortedPairs);
console.log(objs);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.min.js"></script>
我正在使用 Ramda
按键对规范化模型对象进行排序。首先,我转换为键|值对(相当于 Object.entries
),然后使用 R.head
按第一个值排序(成对时的 key
值)
我想将生成的排序数组对转换为对象数组 - 在我使用 ES6+ map
和 array 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}
})
您可以使用 R.map 和已应用的 R.objOf 将数组对 ([key, value]) 转换为数组对象
const { compose, map, apply, objOf, sortBy, head, toPairs } = R
const sortByKey = compose(sortBy(head), 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>
您可以使用 compose(fromPairs, of)
从一对创建对象。
const fromPair = compose(fromPairs, of);
fromPair(["a", 1]);
//=> {"a": 1}
const { compose, fromPairs, head, map, of, sortBy, toPairs } = R;
const sortByKey = compose(sortBy(head), toPairs);
const fromPair = compose(fromPairs, of);
const arrayFromPairs = map(fromPair);
const data = {
2: {name: 'two'},
1: {name: 'one'},
};
const sortedPairs = sortByKey(data);
const objs = arrayFromPairs(sortedPairs);
console.log(objs);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.min.js"></script>