Я пытаюсь реализовать множественную сортировку для вложенного массива на основе ключей и порядка сортировки.
Я могу сортировать массив на основе ключа и порядка
У меня естьсделал следующий код для сортировки по массиву,
return array.sort((a, b) => {
let i = 0, result = 0;
while (i < sortBy.length && result === 0) {
if (typeof a[sortBy[i].prop] == "string") {
result = sortBy[i].direction * (a[sortBy[i].prop].toString() < b[sortBy[i].prop].toString() ? -1 : (a[sortBy[i].prop].toString() > b[sortBy[i].prop].toString() ? 1 : 0));
} else {
result = sortBy[i].direction * (a[sortBy[i].prop] < b[sortBy[i].prop] ? -1 : (a[sortBy[i].prop] > b[sortBy[i].prop] ? 1 : 0));
}
i++;
}
return result;
});
Мои входные данные приведены ниже,
array = [{ x: [{ d: 4 }, { d: 2 }, { d: 3 }, { d: 1 }], b: 'v' }, { x: [{ d: 8 }, { d: 7 }, { d: 5 }, { d: 6 }], b: 's' }];
sortBy= [{ 'prop': 'b', 'direction': 1 }, { 'prop': 'd', 'direction': 1}];
Я ожидал вывод, подобный приведенному ниже,
array = [{ x: [{ d: 5 }, { d: 6 }, { d: 7 }, { d: 8 }], b: 's' },{ x: [{ d: 1 }, { d: 2 }, { d: 3 }, { d: 4 }], b: 'v' }];
Но я получаю следующий результат:
array = [{ x: [{ d: 8 }, { d: 7 }, { d: 5 }, { d: 6 }], b: 's' },{ x: [{ d: 4 }, { d: 2 }, { d: 3 }, { d: 1 }], b: 'v' }];
Я застрял на том, как решить эту логическую проблему.Может ли кто-нибудь помочь мне в этом.