Нужна помощь в создании двумерного массива через завыкание
Вcем привет.
Прошу помочь плз в решении задачки. Есть функция которая рандомно перемешивает элементы массива, Нужно написать функцию которая создаёт через цикл двумерный массив из многократных вазовов getShuffle(arr).
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
function getShuffle(param) {
return param.sort(function (a, b) {
return Math.floor(Math.random() - 0.5);
})
};
function makeMultiArr() {
var pusher = [];
for (var i = 0; i < 5; i++) {
var p = function () {
return getShuffle(arr);
};
pusher.push(p())
};
return pusher;
}
console.log(makeMultiArr());
Понимаю что нужно делать через замыкание но не получается. Нужен хелп. |
15-ю строку замените этим:
return getShuffle(arr.slice()); |
Большое спасибо:thanks:
Только я не понял как это работает. буду разбираться. |
:)
<script>
"use strict"
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
function shuffleArray() {
let array = this.slice(0);
for (let i = array.length - 1; i > 0; i--) {
let j = Math.random() * i|0;
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
function makeMultiArr(num, arr) {
return Array.from({length : num}, shuffleArray, arr)
}
document.write(JSON.stringify(makeMultiArr(5, arr)))
</script>
|
Понял в чём был косяк arr постоянно перетирался
|
Цитата:
slice создаёт новый обьект |
| Часовой пояс GMT +3, время: 10:40. |