Проблема простого отображения исходного массива на полпути в порядке возрастания и на полпути в порядке убывания состоит в том, что выходной результат будет 80, 70, 60, 50, 10, 20, 30, 40 ,, потому что когда массив получитсообщение, чтобы начать сортировку в порядке убывания, будет помещать все числа от 50 и выше до 10 20 30 40, потому что оно выше, и оно должно идти первым.
Таким образом, чтобы получить вывод 10, 20, 30, 40, 80, 70, 60, 50, вы можете разбить массив на 2 новых массива, затем отсортировать их, а затем снова объединить их вместе следующим образом:
function sortArrays(a) {
//slices the value of the passed in array in half, and makes 2 new arrays of it
var arrayLength1 = a.length;
var arrayHalf = arrayLength1 / 2;
var firstHalf = a.slice(0,arrayHalf);
var secondHalf = a.slice(arrayHalf);
// sorts one array ascending and the other descending
firstHalf.sort(ascendingFunction);
secondHalf.sort(descendingFunction);
//combines together the 2 arrays, already sorted one ascending and one descending
var newSortedArray = firstHalf.concat(secondHalf);
alert(newSortedArray); // the output you want
}
function ascendingFunction(a,b){
return a - b
}
function descendingFunction(a,b){
return b - a
}
var one = [10, 20, 30, 40, 50, 60, 70, 80];
var two = [60, 70, 80, 90, 100, 110, 120, 130];
теперь вы можете вызывать функцию и передавать все, что угодномассив, который вы хотите, например:
sortArrays(one);
sortArrays(two);