Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số nguyên làm đối số duy nhất.
Hàm sẽ sắp xếp mảng dựa trên các điều kiện sau -
-
Tất cả các số chẵn được sắp xếp theo thứ tự tăng dần
-
Tất cả các số lẻ được sắp xếp theo thứ tự giảm dần
-
Vị trí tương đối của số chẵn và số lẻ không đổi
Ví dụ -
Nếu mảng đầu vào là -
const arr = [12, 17, 15, 24, 1, 6];
Sau đó, đầu ra phải là -
const output = [6, 17, 15, 12, 1, 24];
Ví dụ
Sau đây là mã -
const arr = [12, 17, 15, 24, 1, 6]; const specialSort = (nums = []) => { const oddArr = [], evenArr = []; for (let i = 0; i < nums.length; i++){ if (nums[i] & 1) { oddArr.push(i); } else { evenArr.push(i); } } nums.sort((a, b) => a - b); let odd = oddArr.length - 1, even = 0; const res = []; for (let i = 0; i < nums.length; i++){ if (nums[i] & 1) { res[oddArr[odd--]] = nums[i]; } else { res[evenArr[even++]] = nums[i]; } } return res; }
Đầu ra
Sau đây là đầu ra của bảng điều khiển -
[ 6, 17, 15, 12, 1, 24 ]