Я пытаюсь отсортировать массив JavaScript с определенным условием.Я попытался использовать array.sort()
, но это не сработало так, как я хотел.
У меня есть такой массив:
leftTable = [
{tableL:"A", tableR:"E"},
{tableL:"A", tableR:"E"},
{tableL:"C", tableR:"D"},
{tableL:"H", tableR:"A"},
{tableL:"F", tableR:"G"},
{tableL:"E", tableR:"A"},
];
, и я хочу отсортировать его так:
leftTable = [
{tableL:"A", tableR:"E"},
{tableL:"A", tableR:"E"},
{tableL:"E", tableR:"A"},
{tableL:"H", tableR:"A"},
{tableL:"C", tableR:"D"},
{tableL:"F", tableR:"G"},
];
но я получаю вот что:
leftTable = [
{tableL: "A", tableR: "E"},
{tableL: "A", tableR: "E"},
{tableL: "C", tableR: "D"},
{tableL: "E", tableR: "A"},
{tableL: "F", tableR: "G"},
{tableL: "H", tableR: "A"}
]
Я уже пробовал несколько раз, но это не сработало.Это одна вещь, которую я до сих пор пробовал:
leftTable.sort(function(a, b) {
console.log(a.tableL,a.tableR,b.tableL,b.tableR);
if (a.tableL < b.tableL) {
return -1;
} else if (a.tableL > b.tableL) {
return 1;
} else if (a.tableL == b.tableL) {
if(a.tableR == b.tableR) return -1; else return 1;
} else if (a.tableL == b.tableR) {
if(a.tableR == b.tableL) return -1; else return 1;
} else {
return 0;
}
});
Моя логика сортировки такова:
Если значения {"A","E"}
и следующий объект имеетте же значения, но только в обратном порядке, как {"E","A"}
, я хочу, чтобы они были отсортированы вместе.То же самое происходит, если одно из значений содержит хотя бы одно из предыдущих значений, например: {"H","A"}
или {"A","K"}
.
Но я получаю только то, что массив просто сортируется в порядке возрастания, как обычно.
Могу ли я узнать, есть ли лучший способ сделать это?