Ramda - 如何将对象值映射到字符串
Ramda - How to map object values to string
我正在尝试使用 Ramda 获取 x,y
坐标以在 svg
中绘制 polyline
。
我有 edge
对象,其中包含我需要的所有点,它看起来像这样:
const edge = {
"id": "e1_s0",
"startPoint": {
"x": 212,
"y": 505.33333333333326
},
"endPoint": {
"x": 232,
"y": 302
},
"bendPoints": [
{
"x": 222,
"y": 505.33333333333326
},
{
"x": 222,
"y": 302
}
],
"incomingShape": "n1",
"outgoingShape": "n2"
}
我尝试使用 Ramda 从 startPoint
、endPoint
和 bendPoints
中获取 x, y
。我想出了这段代码:
R.pipe(
R.pick(['bendPoints', 'endPoint', 'startPoint']),
R.values,
R.flatten,
R.sortBy(R.prop('x'))
)(edge)
这里可以查看ramda editor
结果,我得到:
[
{
x: 212,
y: 505.33333333333326
},
{
x: 222,
y: 505.33333333333326
},
{
x: 222,
y: 302
},
{
x: 232,
y: 302
}
]
但我需要一个包含 x
和 y
对的字符串除以 space 并且我不知道如何继续达到这一点:212,505.33333333333326 222,505.33333333333326 222,302 232,302
如有任何帮助,我们将不胜感激
编辑:完整的解决方案
R.pipe(
R.pick(['bendPoints', 'endPoint', 'startPoint']),
R.values,
R.flatten,
R.sortBy(R.prop('x')),
R.map(
R.pipe(
R.props(['x', 'y']),
R.join(',')
)
),
R.join(" ")
)(edge)
我认为你需要的步骤是:
- 对于每个点,
- 取
x
和 y
值,
- 将它们连接成一个字符串,用
","
分隔
- 获取这些字符串并将它们连接成一个字符串,由
" "
分隔
可以直译为 ramda:
const formatPoints = pipe(
map(
pipe(
props(["x", "y"]),
join(",")
)
),
join(" ")
);
我正在尝试使用 Ramda 获取 x,y
坐标以在 svg
中绘制 polyline
。
我有 edge
对象,其中包含我需要的所有点,它看起来像这样:
const edge = {
"id": "e1_s0",
"startPoint": {
"x": 212,
"y": 505.33333333333326
},
"endPoint": {
"x": 232,
"y": 302
},
"bendPoints": [
{
"x": 222,
"y": 505.33333333333326
},
{
"x": 222,
"y": 302
}
],
"incomingShape": "n1",
"outgoingShape": "n2"
}
我尝试使用 Ramda 从 startPoint
、endPoint
和 bendPoints
中获取 x, y
。我想出了这段代码:
R.pipe(
R.pick(['bendPoints', 'endPoint', 'startPoint']),
R.values,
R.flatten,
R.sortBy(R.prop('x'))
)(edge)
这里可以查看ramda editor
结果,我得到:
[
{
x: 212,
y: 505.33333333333326
},
{
x: 222,
y: 505.33333333333326
},
{
x: 222,
y: 302
},
{
x: 232,
y: 302
}
]
但我需要一个包含 x
和 y
对的字符串除以 space 并且我不知道如何继续达到这一点:212,505.33333333333326 222,505.33333333333326 222,302 232,302
如有任何帮助,我们将不胜感激
编辑:完整的解决方案
R.pipe(
R.pick(['bendPoints', 'endPoint', 'startPoint']),
R.values,
R.flatten,
R.sortBy(R.prop('x')),
R.map(
R.pipe(
R.props(['x', 'y']),
R.join(',')
)
),
R.join(" ")
)(edge)
我认为你需要的步骤是:
- 对于每个点,
- 取
x
和y
值, - 将它们连接成一个字符串,用
","
分隔
- 取
- 获取这些字符串并将它们连接成一个字符串,由
" "
分隔
可以直译为 ramda:
const formatPoints = pipe(
map(
pipe(
props(["x", "y"]),
join(",")
)
),
join(" ")
);