Сортировка массива с использованием функции Javascript - Понимание - PullRequest
1 голос
/ 18 октября 2011

Я решил получить перемешанные значения из массива. для этого я использовал эту функцию, я получил ее из сети, она отлично работает. Но я не знаю, как это работает ...

Кто-нибудь может помочь мне понять это?

мой код:

  function rand(ar){
    return 0.5-Math.random();
}
var ar = [5,10,15,20,25]
ar.sort(rand);
console.log(ar)

Я использую эту функцию для получения новых значений перетасованного массива из объявленного.

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Этот код использует поставляемую функцию rand в качестве оператора сравнения для метода Array.Sort (http://msdn.microsoft.com/en-us/library/4b4fbfhk(VS.85).aspx)., поскольку функция Math.random (http://msdn.microsoft.com/en-us/library/41336409.aspx)) возвращает значение от 0 (включительно). ) до 1 (исключение), функция rand вернет значение от 0,5 (включительно) до -0,5 (исключение).

Обычно sortFunction, предоставляемая методу Sort, принимает 2 сравниваемых аргумента. Функция sortFunction сравнивает их и возвращает значение, которое означает:

  • Отрицательный - первый элемент меньше, чем второй
  • Ноль - предметы равны
  • Положительный - первый элемент больше второго

При запуске метода sort он использует это сравнение, чтобы определить, какие значения массива должны идти перед другими.

В случае вашего кода возвращаемое значение функции rand является случайным и не имеет корреляции с данными. Это означает, что всякий раз, когда функция sort пытается сравнить два значения в массиве, половина времени будет сообщать, что первый элемент меньше второго, а половина второго элемента меньше первого. Поскольку это делается по всей длине массива, элементы меняются случайным образом, и весь массив становится рандомизированным.

0 голосов
/ 18 октября 2011

array.sort () имеет необязательный параметр, который является функцией сортировки, вы можете передать ссылку на функцию, чтобы изменить порядок массива.

Возможно, эта страница может быть полезной http://www.javascriptkit.com/javatutors/arraysort.shtml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...