Перемешивание массива: почему это работает?

Я в процессе создания пасьянса JavaScript. Я искал информацию о том, как использовать sort()и Math.random()вместе, чтобы перетасовать колоду, когда я столкнулся с этим на трюках CSS:

array.sort(function() {return 0.5 - Math.random()})

Прекрасно работает, это потрясающе, но я понятия не имею, почему. Кто-нибудь объяснит, почему это работает?

javascript,shuffle,

0

Ответов: 1


1 принят

Как работает Array.sort

В функции сортировки элементы массива сортируются в соответствии с возвращаемым значением функции сравнения. Если a и b сравниваются два элемента, тогда:

array.sort(function(a, b){return a - b});

Теперь, если (ab) меньше 0, a сортируется по индексу ниже b, так как a меньше b.

Если (ab) возвращает 0, оставьте a и b неизменными относительно друг друга, так как они равны. Примечание: стандарт ECMAscript не гарантирует такого поведения.

Если (ab) больше 0, b сортируется с индексом ниже, чем a, так как a больше b.

Как работает Math.Random

Он просто возвращает случайное значение между 0 и 1.

Теперь, придя к этому случаю, так как фактические значения в массиве здесь игнорируются, а случайное значение передается (ab), функция будет просто случайно возвращать <0, 0 или> 0 для каждой пары, которая сравнивается. Отсюда и порядок сортировки для того же массива.

JavaScript, перетасовать,
Похожие вопросы