使用Ramda对X和Y坐标进行排序

时间:2018-10-17 22:09:48

标签: javascript sorting ramda.js

我有一个以下形式的数组:

[
  { i: 'text', layout: {x: 1, y: 0} }
  { i: 'text', layout: {x: 0, y: 0} }
  { i: 'text', layout: {x: 1, y: 1} }
]

我想使用ramda包对数组进行排序

到目前为止,我已经达到对Y排序的第一位了。

const sortedY = R.sortBy(R.path(['layout', 'y']));
const temp = sortedY(originalContent);

请提出如何对x和y进行排序-

{x: 0, y: 0}
{x: 1, y: 0}
{x: 1, y: 1}

2 个答案:

答案 0 :(得分:1)

使用sortWith使用多个比较器进行排序。

const xySort = R.sortWith([
  R.ascend(R.path(['layout','x'])),
  R.ascend(R.path(['layout','y']))
])

答案 1 :(得分:1)

好像您想使用sortWith

这里是an example

var list = [
  { i: 'first', layout: {x: 1, y: 1} },
  { i: 'second', layout: {x: 1, y: 0} },
  { i: 'third', layout: {x: 0, y: 1} },
];

var xySort = R.sortWith([
  R.ascend(R.path(['layout', 'x'])),
  R.ascend(R.path(['layout', 'y'])),
]);

console.log(xySort(list));