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

Обход многомерного массива с задержкой после каждого цикла
Здравствуйте

Уже несколько дней бьюсь над задачей обхода многомерного массива, с задержкой после каждого цикла.

Сделать обход простого массива с задержкой - получается. Сделать обход многомерного массива без задержки - получается. А вот объединить два подхода в одном - не получается.

Примеры:

Обход массива с задержкой 1с:

function go(scenario) {
        var i = 0,
            timer = setInterval(
                function() {
                    if (i < scenario.length) {
                        console.log('User: ' + scenario[i].user);
                        i++;
                    }
                    else{
                        clearInterval(timer);
                    }
                },
                1000
            );
    }

    var scenario = [
        {
            'user': 'user1'
        },
        {
            'user': 'user2'
        },
        {
            'user': 'user3'
        }

    ];

    window.onload=function(){
        go(scenario);
    }


Обход многомерного массива без задержки:

var a = [ // общий массив
        [ // массив stroke
            [ // массив этапов
                {
                    'user_id': 1
                },
                {
                    'user_id': 2
                }
            ],
            [
                {
                    'user_id': 1
                },
                {
                    'user_id': 2
                }
            ],
            [
                {
                    'user_id': 1
                },
                {
                    'user_id': 2
                }
            ],
            [
                {
                    'user_id': 1
                },
                {
                    'user_id': 2
                }
            ]
        ],
        [ // массив stroke
            [ // массив этапов
                {
                    'user_id': 1
                },
                {
                    'user_id': 2
                }
            ],
            [
                {
                    'user_id': 1
                },
                {
                    'user_id': 2
                }
            ],
            [
                {
                    'user_id': 1
                },
                {
                    'user_id': 2
                }
            ],
            [
                {
                    'user_id': 1
                },
                {
                    'user_id': 2
                }
            ]
        ]
    ];

    function go(a) {
        i = 0;
        while (i < a.length) {
            j = 0;
            while (j < a[i].length) {
                n = 0;
                while (n < a[i][j].length) {
                    console.log('Ход: ' + i + ' Эпизод: ' + j + ' Объект: ' + n);
                    n++;
                }
                j++;
            }
            i++;
        }
    }
    go(a);


Есть понимание, что надо первый пример развить до трех вложенных функций с задержками, но у меня от вложенности такая каша получается, что и не работает, и не разобраться почему.

Буду признателен, если кто-то напишет готовый код.
Ответить с цитированием