Есть массив объектов, которые мне нужно отсортировать.Это выглядит так:
var array = [
{left: 20, top: 50, group: 'groupOne'},
{left: 18, top: 10, group: 'groupTwo'},
{left: 15, top: 15, group: 'groupThree'},
{left: 25, top: 30, group: 'groupThree'},
{left: 18, top: 25, group: 'groupFour'},
{left: 28, top: 25, group: 'groupFive'},
{left: 25, top: 15, group: 'groupSix'},
{left: 30, top: 30, group: 'groupSix'}
];
Я хочу отсортировать его по left (в основном) и top (во-вторых).Моя функция сортировки выглядит следующим образом:
array.sort((x, y) => {
return x.left - y.left || x.top - y.top;
});
Результат:
[
{left: 15, top: 15, group: "groupThree"},
{left: 18, top: 10, group: "groupTwo"},
{left: 18, top: 25, group: "groupFour"},
{left: 20, top: 50, group: "groupOne"},
{left: 25, top: 15, group: "groupSix"},
{left: 25, top: 30, group: "groupThree"},
{left: 28, top: 25, group: "groupFive"},
{left: 30, top: 30, group: "groupSix"}
];
Функция сортировки работает почти так, как я хотел, но было бы лучше, если бы она также учитывала group , если в одной группе более одного элемента.
Другими словами, я хочу, чтобы конечный результат выглядел следующим образом:
[
{left: 15, top: 15, group: "groupThree"},
{left: 25, top: 30, group: "groupThree"},
{left: 18, top: 10, group: "groupTwo"},
{left: 18, top: 25, group: "groupFour"},
{left: 20, top: 50, group: "groupOne"},
{left: 25, top: 15, group: "groupSix"},
{left: 30, top: 30, group: "groupSix"}
{left: 28, top: 25, group: "groupFive"},
];
Элементы из одной группы "держаться вместе.Есть идеи?