У меня есть простой массив строк, который выглядит как ниже, и соответствующий новый массив. То, что мне нужно выполнить, - это перетасовать простой массив с помощью простого алгоритма тасования (например, ниже), но мне нужен соответствующий новый массив для перетасовки с тем же самым точным перетасовкой, то есть результатом каждого индекса были бы идентичны. Это может ввести в заблуждение, поэтому посмотрите на приведенный ниже пример, и он должен стать ясным. Возможно ли, что этот тип алгоритма возможен при перетасовке Фишера-Йейта?индексы отслеживания с алгоритмом тасования в javascript
Fiddle: here
До:
var simple_arr = ["701", "702", "703", "704", "705", "706", "707", "708"];
var new_arr = ["A1","A2","A3","A4","A5","A6","A7","A8"];
После:
var after_simple_arr = ["701", "708", "702", "705", "703", "706", "704", "707"];
var after_new_arr = ["A1","A8","A2","A5","A3","A6","A4","A7"];
Fisher-Yates алгоритм перетасовать:
function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
это отличное решение, спасибо! @ZiyaoWei – NodeDeveloper102