Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.04.2018, 13:22
Интересующийся
Отправить личное сообщение для JStudent Посмотреть профиль Найти все сообщения от JStudent
 
Регистрация: 10.04.2018
Сообщений: 14

Нужна помощь в создании двумерного массива через завыкание
В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());


Понимаю что нужно делать через замыкание но не получается.
Нужен хелп.
Ответить с цитированием
  #2 (permalink)  
Старый 10.04.2018, 13:28
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

15-ю строку замените этим:
return getShuffle(arr.slice());
Ответить с цитированием
  #3 (permalink)  
Старый 10.04.2018, 14:00
Интересующийся
Отправить личное сообщение для JStudent Посмотреть профиль Найти все сообщения от JStudent
 
Регистрация: 10.04.2018
Сообщений: 14

Большое спасибо
Только я не понял как это работает.
буду разбираться.
Ответить с цитированием
  #4 (permalink)  
Старый 10.04.2018, 16:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068


<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>
Ответить с цитированием
  #5 (permalink)  
Старый 11.04.2018, 08:08
Интересующийся
Отправить личное сообщение для JStudent Посмотреть профиль Найти все сообщения от JStudent
 
Регистрация: 10.04.2018
Сообщений: 14

Понял в чём был косяк arr постоянно перетирался

Последний раз редактировалось JStudent, 11.04.2018 в 08:11.
Ответить с цитированием
  #6 (permalink)  
Старый 11.04.2018, 08:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от JStudent
Понял в чём был косяк arr постоянно перетирался
Объекты: передача по ссылке

slice создаёт новый обьект
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в создании матрицы расстояний! lihtaryk Работа 0 23.05.2015 15:55
нужна помощь в JavaScript михаил Общие вопросы Javascript 26 30.10.2013 12:07
нужна помощь Sergiy Серверные языки и технологии 2 31.03.2010 20:16
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17
jQuery Ajax Rater Plugin и массив POST - Нужна помощь TROODON jQuery 12 30.12.2009 22:44