Нужна помощь в создании двумерного массива через завыкание
В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, время: 15:17. |