Chciałbym napisać funkcje która by mi sortowała tablice sortująco lub malejąco. Robię takie zadanie https://www.codewars.com/kata/5f70c883e10f9e0001c89673/train/javascript lecz jakbym nie zrobił to nie działa
0
4
const flip = (d, arr) => {
const f = d == 'R'? 1 : - 1;
return arr.slice().sort((a,b) => (a - b) * f);
}
slice()
żeby skopiować tablicę, sort()
sortuje tablicę przyjmując daną funkcję porównującą. Jeśli użytkownik podał coś innego niż 'R', to wynik będzie mnożony przez -1, czyli kierunek sortowania się zmieni.
3
JS'owy array ma metodę reverse()
więc wystarczy umieć sortować w jednym kierunku: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse.
Inna sprawa że domyślne array.sort()
działa na napisach więc jak sortujemy liczby to mogą wyjść takie kwiatki:
[1, 10, 9, 99].sort()
(4) [1, 10, 9, 99]
Dlatego trzeba niestety przekazać własną funkcję porównującą:
function flip(direction, array) {
array.sort((a,b) => a - b);
if (direction == 'R') {
array.reverse();
}
return array;
}
Ta funkcja modyfikuję przekazaną do niej tablicę.
0
Dzięki