Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   дописать массив (https://javascript.ru/forum/misc/76969-dopisat-massiv.html)

Денис01952 06.03.2019 18:10

дописать массив
 
var token = "455123452342eec8267ce52b8c4e7565983aef5f22e28b2154a4f5eacad66c4c1eb918de0595bb93fb0"

var day = 1
var arr = ["dakota"];


function sendRequest() {
    var request5 = new XMLHttpRequest();
    request5.withCredentials = true;
    request5.open('Get', 'https://api.vk.com/method/users.search?sort=1&count=1000&city=1&country=1&sex=1&status=6&age_from=18&age_to=18&' + day + '&access_token=' + token + '&v=5.52', true);
    request5.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request5.onload = function() {
        var i = 0;
        var json = this.response;
        var data = JSON.parse(json);
        var data2 = data.response.items
        arr["dakota"] = [data2];
       for (i = 0; i < data2.length; i++) {
            arr.dakota.push(data2[i].id);
        }
        console.log(arr, day)
    }
    request5.send();
  
day++

if(day<=28){clearInterval(sendRequest) }
}

setInterval ( sendRequest ,1000)

каждый раз при увеличении day нужно дописывать массив arr["dakota"]
где я ошибся?
токен вк не вырный если что

Nexus 06.03.2019 18:30

Цитата:

Сообщение от Денис01952
дописывать массив arr["dakota"]

Дополнять т.е.?

В строке 17 перезаписываете значение массива.
В 19 пытаетесь обратиться к свойству "dakota" массива "arr". У массива нет такого свойства.
Не дожидаясь окончания загрузки данных создаете новый запрос.

ps. с консолью научитесь работать.


В строке 17 вы создаете массиву свойство "dakota", с которым дальше работаете.
Лучше вместо массива использовать object.
Из-за 27-й строки запрос будет выполнен только 1.

Денис01952 07.03.2019 14:18

спасибо удалил строку 17 и все заработало

Nexus 07.03.2019 14:28

Денис01952,
В моем предыдущем комментарии есть ошибки, сейчас поправлю.

Вы, наверное, может быть, возможно, хотели сделать как-то так:
var token = "455123452342eec8267ce52b8c4e7565983aef5f22e28b2154a4f5eacad66c4c1eb918de0595bb93fb0"

var arr = {
    dakota: []
};


function sendRequest(day) {
    var request5 = new XMLHttpRequest();
    request5.withCredentials = true;
    request5.open('Get', 'https://api.vk.com/method/users.search?sort=1&count=1000&city=1&country=1&sex=1&status=6&age_from=18&age_to=18&' + day + '&access_token=' + token + '&v=5.52', true);
    request5.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request5.onload = function() {
        arr.dakota = arr.dakota.concat(
            JSON.parse(this.response).response.items
        );

        if (++day <= 28)
            setTimeout(sendRequest, 1000, day);
        else
            console.log(arr);
    }
    request5.send();
};

sendRequest(1);


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