Упорядочить массив по значению и поместить в середину

#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);