#javascript #jquery #arrays #arraylist #numbers
#javascript #jquery #массивы #arraylist #числа
Вопрос:
Очень быстрый вопрос, я хочу упорядочить массив по определенному значению и всегда помещать его в середину. Например … если мой массив равен:
myarr = [1,2,3,4,5];
функция middlelizeArr(myarr,2) должна мне вернуть этот массив:
result [5,1,2,3,4]
и найти наилучшее условие в случае четного массива
myarr = [1,2,3,4,5,6,7,8];
result [7,8,1,2,3,4,5,6];
Как я мог это сделать? Кто-нибудь может мне помочь?
Комментарии:
1. что вы пробовали?
2. Зачем вам это делать?
3. 1) Вам нужно показать нам, что вы пытались, прежде чем обращаться за помощью. 2) Даже не думайте о коде. Представьте, что у вас есть куча корзин с листами бумаги, на каждом из которых написано число. Как бы вы это отсортировали? Попробуйте этот процесс с несколькими разными числами, тогда у вас будет свой алгоритм. Переведите это в код, и все готово.
Ответ №1:
Сначала вам нужно определить размер массива и найти расположение числа, которое вы хотите поместить в середину
Если n = размер массива, l = расположение числа, которое вы хотите поместить в середину
если n / 2 > l, то сдвиньте свое число по часовой стрелке, в противном случае сдвиньте его против часовой стрелки.
Ответ №2:
Это делается путем сравнения индекса «среднего» числа с длиной массива, а затем сдвига (и нажатия) до тех пор, пока они не станут равными.
Я реализовал это следующим образом:
function middlelizeArray(array, middle) {
var goal = Math.trunc(array.length/2);
while(array.indexOf(middle) != goal) {
array.push(array.shift());
}
return array;
}
Это также можно добавить непосредственно в прототип массива. Это позволило бы вам просто сказать myArray.middlelize(2);
Это было бы сделано следующим образом:
Array.prototype.middlelize = function(middle) {
var goal = Math.trunc(this.length/2);
while(this.indexOf(middle) != goal) {
this.push(this.shift());
}
return this;
}
Комментарии:
1. а если я хочу сделать то же самое с Obj? например… я хочу упорядочить список UL по определенному значению li … такова моя структура… <ul> <li value=»1″> 1</li> <li value=»2″> 2</li> <li value=»3″>3</li> <li value=»4″>4</li> <li value=»5″> 5</li> <li value=»6″> 6</li> </ul> Как я могу заказать это так? Это не работает $(‘ul’).find(‘li’).middlelize(7);