Сложная сортировка массива с помощью метода sort()
Здравствуйте. Есть массив:
[-2, 2, 4, 6, 8, 10, 3, 5, 7, 9, -1, -11] Нужно преобразовать его, чтобы он удовлетворял условиям:
[ 10, 8, 6, 4, 2, -2, -11, -1, 3, 5, 7, 9 ] Я написал адскую функцию, которая делает это, приводить её тут не вижу смысла. Можно ли за один прогон с помощью sort() отсортировать как надо? function sortArr(array) { return array.sort((a, b) => { if (a % 2 === 0 && b % 2 === 0 && a < b) { return 1; } }); } Эта функция реализует первую часть требований, как её переписать, чтобы удовлетворяла обоим что-то не соображу, есть идеи? |
Просто берёшь и описываешь пошагово всю логику, какие проблемы:
alert( [-2, 2, 4, 6, 8, 10, 3, 5, 7, 9, -1, -11].sort(function(a, b){ if(a === b) return 0; var amod = a % 2 === 0; var bmod = b % 2 === 0; if(amod && bmod) return a > b ? -1 : 1 if(!amod && !bmod) return a > b ? 1 : -1 if(amod) return -1 if(bmod) return 1 }) )Потом уже можешь свернуть и сократить, но это дело десятое. |
Часовой пояс GMT +3, время: 05:50. |