Se houver uma matriz como esta:
var Arr1 = ["A", "B", "C", "D"];
Como interromper aleatoriamente a ordem da matriz, isto é, embaralhá -la.
Existe um algoritmo aleatório simples que é amplamente espalhado:
função randomsort (a, b) {return (0.5 - math.random ()); }Na verdade, está provado que o exposto acima não é completamente aleatório.
Acabei de procurar por muitas coisas na internet. Vamos dar uma olhada em uma resposta de alta pontuação no Stackoverflow. A resposta vem do Github.
Knuthfufle
O Fisher-Yates (também conhecido como Knuth) embaralha para navegador e node.js
Vamos dar uma olhada no algoritmo mencionado acima. O código é o seguinte:
/ *jshint -w054 */(function (exports) {'use strict'; // http://stackoverflow.com/questions/2450954/how-to-randomize shuffle-a-javasscript-arrayfunção shuffle (array) {var curtindex = array.lmust, temporaryVaryFunue, RandomEnge, CurrentIndex) {// Escolha um elemento restante ... RandomIndex = Math.floor (Math.random () * currentIndex); currentIndex -= 1; // e trocou -o com o elemento atual.TemporaryValue = matriz [RandomIndEx]; Array [CurrentIndex] = Array [RandomInd.Sex]; Array [RandomEx] = Randimex]; TemporeLe; shuffle;} ('indefinido'! == TIPOOF EXPORTS && Exports || 'Undefined'! == TypeOf Window && Window || Global));O autor recomenda o uso de um método de escrita do navegador:
(function () {'use strict'; var a = [2,11,37,42], b; // A embaralhamento modifica a matriz original // chamando a.slice (0) cria uma cópia que é atribuída a bb = window.knuthfuffle (a.slice (0)); console.log (b)} ());Nodejs:
npm install -s knuth-shuffle (function () {'use strict'; var shuffle = requer ('knuth-shuffle'). knuthshuffle, a = [2,11,37,42], b; // o shuffle modifica o shuffle (a.slice (a.slice);Existem outros que são deformados a partir desse algoritmo, como o seguinte para loop. Não vou falar sobre mais nada.
/*** Randomize o elemento da matriz Ordem no local.* Usando o algoritmo de Shuffle Durstenfeld. Temp;} Retorno Array;}
Usando o ES2015 (ES6)
Array.prototype.Shuffle = function () {let m = this.length, i; while (m) {i = (math.random () * m--) >>> 0;usar:
[1, 2, 3, 4, 5, 6, 7] .Shuffle ();
Encontrei muitos algoritmos aleatórios para a pesquisa chinesa, mas ainda é necessário completamente aleatório, e a eficiência e a compatibilidade ainda devem ser investigadas. Recomenda -se que, se você precisar usar os elementos da matriz aleatória posteriormente, poderá usar o acima.