Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как правильнее заполнить массив? (https://javascript.ru/forum/misc/75053-kak-pravilnee-zapolnit-massiv.html)

Artur_Hopf 29.08.2018 11:05

Как правильнее заполнить массив?
 
Добрый день. Есть функция которая получает 2 массива данных и передает их в функцию:
function getArray (){
    var array = [];
    var a = $.getJSON( "url1", function(dataArr) {
        array['a'] = dataArr;
    });
    var b = $.getJSON( "url2", function(dataArr2) {
        array['b'] = dataArr2;
    });
    $.when(a, b).then(function() {
        createArray(array['a'], array['b']);
    });
}

Как правильно передать их в функцию? так как сверху или вот так:
function getArray (){
    var array = [];
    var a = $.getJSON( "url1", function(dataArr) {
        array.push(dataArr);
    });
    var b = $.getJSON( "url2", function(dataArr2) {
        array.push(dataArr2);
    });
    $.when(a, b).then(function() {
        createArray(array[0], array[1]);
    });
}


Я боюсь что при 2ом варианте может перепутаться местами array[0] и array[1].
А так записать дает ошибку:
array[0].push(dataArr);
array[1].push(dataArr2);


Если первый вариант логически правильный, и не может вызвать ошибку я его оставлю.:-?

Dilettante_Pro 29.08.2018 11:36

Цитата:

Сообщение от Artur_Hopf
так записать дает ошибку:
array[0].push(dataArr);
array[1].push(dataArr2);

.push добавляет новый элемент в конец имеющегося массива.
Цитата:

Сообщение от Artur_Hopf
при 2ом варианте может перепутаться местами array[0] и array[1]

Поскольку время выполнения запросов getJSON может быть различным, то это весьма вероятно.

Присвоение значений конкретным элементам делается обычным образом:
array[0] = dataArr;
array[1] = dataArr2;

Artur_Hopf 29.08.2018 13:05

Dilettante_Pro,
Буду знать, спасибо, сделал так=):
$.when($.getJSON('url1'), $.getJSON('url2')).done(function(a1, a2) {
        createArray(a1[0], a2[0]);
    });


Часовой пояс GMT +3, время: 09:04.