Computer >> Máy Tính >  >> Lập trình >> Javascript

Phân loại mảng trong JavaScript không đồng đều

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số, arr, làm đối số duy nhất. Hàm của chúng ta nên sắp xếp mảng này theo cách mà sau khi sắp xếp, các phần tử phải theo mẫu này -

arr[0] < arr[1] > arr[2] < arr[3]....

Ví dụ:nếu đầu vào của hàm là -

const arr = [1, 5, 1, 1, 6, 4];

Sau đó, đầu ra có thể (cũng có thể có nhiều hơn một câu trả lời) là -

const output = [2, 3, 1, 3, 1, 2];

Ví dụ

Mã cho điều này sẽ là -

const arr = [1, 5, 1, 1, 6, 4];
const unevenSort = (arr = []) => {
   arr.sort((a, b) => a - b);
   let mid = Math.floor(arr.length / 2);
   if(arr.length % 2 === 1){
      mid += 1;
   };
   let even = arr.slice(0, mid);
   let odd = arr.slice(mid);
   for(let i = 0; i < arr.length; i++){
      if(i % 2 === 0){
         arr[i] = even.pop();
      }else{
         arr[i] = odd.pop();
      };
   };
};
unevenSort(arr);
console.log(arr);

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

[ 1, 6, 1, 5, 1, 4 ]