Сортировка массива на заказ? - PullRequest
0 голосов
/ 04 марта 2020

Цель этого кода - отсортировать этот массив [1,2,3,4,5], чтобы он выглядел следующим образом [5,3,1,2,4]. Я также хочу, чтобы он сортировал массивы, отправленные мне кем-то другим, поэтому, например, он должен работать с [-10, -1, -4] как [-1, -10, -4]. Массив должен быть отсортирован по следующим правилам:

  • Наименьшее число находится посередине.
  • Число, превышающее наименьшее, должно быть справа от него [2] (в первом примере) .
  • Число больше [2] (в первом примере) следует оставить от [1] (в первом примере).

Пока это моя идея:

let values = [1,2,3];
let storage = values.sort((a, b) => a - b);
let result = storage[0];

for( let i = 1; i <= (values.length/2); i+=2 ){
    result.unshift (storage[i]);
    result.push (storage[i+1]);

}
return result);

Но я не могу заставить это работать, я потерян на том, что я могу изменить в данный момент.

Ответы [ 3 ]

1 голос
/ 04 марта 2020

Вы можете выполнить сортировку бабочки, которая сортирует нечетные числа по убыванию и четные по возрастанию.

var array = [1, 2, 3, 4, 5];

array.sort((a, b) => b % 2 - a % 2 || (a % 2 ? b - a : a - b));

console.log(array);
1 голос
/ 04 марта 2020

Вот мое решение

function customSort(inputArray){
  var initialSort = inputArray.sort()

  var finalSorted = []
  finalSorted.push(initialSort[0])
  //console.log(finalSorted)
  for(i=1;i<initialSort.length;i++){
    if(i%2 === 0){
      finalSorted.unshift(initialSort[i])
    }
    else{
      finalSorted.push(initialSort[i])
    }
  
  }
  
  console.log(finalSorted)
  
}

var inputArray = [1,2,3,4,5]

customSort(inputArray)
1 голос
/ 04 марта 2020

Вам нужно сделать result массивом:

let values = [1,2,3];
let storage = values.sort((a, b) => a - b);
let result = [storage[0]];  // make the result an array

for( let i = 1; i <= (values.length/2); i+=2 ){
    result.unshift (storage[i]);
    result.push (storage[i+1]);
}
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...