Tash1moto
@Tash1moto

Как преобразовать в array?

Всем привет.
сейчас разбираюсь с промисами.
Почему тип результата object ? ( result )
как преобразовать его в array и сделать flat() ?
мне нужно соединить распаршеные страницы в один массив.

const fs = require('fs');
const axios = require('axios')
const cheerio = require('cheerio')
let now = Math.floor(new Date());

let scan = new Promise( (resolve,reject)=>{
    const parsedUrl = 'https://tehnoskarb.ua/veb-kamery/c242?page=';
    axios.get(parsedUrl+1)
    .then(res=>{
        let $ = cheerio.load(res.data)
        return parseInt($('span.cur_page>span').text().match(/\d/)[0]); // max page
    })
    .then(pages=>{
        let promises = []
        for(var i=0;i<pages;i++){
            promises.push(axios.get(parsedUrl+i))
        }
        Promise.all(promises).then(pages=>{ // parse each page
            return pages.map(page=>{
                let $ = cheerio.load(page.data);
                return $('div.products>ul>li').map( (i,el)=>{
                    let title = $(el).children('h4').children('a').attr('title');
                    let link = $(el).children('h4').children('a').attr('href');
                    let count = $(el).children('p').text().toString();
                    if(title && link && count){
                        return {title,link,count:parseInt(count.match(/\d/)[0])}
                    }
                    
                }).toArray()
            })
        })
        .then(items=>resolve(items))
    })
});

scan.then(results=>{
    console.log("LEN: ",results.length)
    console.log("TYPE: ",typeof results) // object <--------------------
    console.log( `TIME: ${Math.floor(new Date()) - now} ms`)
    console.log("DATA: ",results)
})
  • Вопрос задан
  • 762 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Arik
typeof не различает вроде, можно попробовать:
Array.isArray(results);
Ответ написан
@grinat
Axios объект возвращает, там хедеры, опции и т.п., тело ответа лежит в data, в случае promises.all все тоже самое, только это будет массив объектов, в каждом из которых хедеры и data с телом ответа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
CS Money Санкт-Петербург
от 120 000 до 150 000 руб.
Digital Sharks Казань
от 60 000 до 65 000 руб.
22 янв. 2019, в 23:42
500 руб./за проект
22 янв. 2019, в 21:11
800 руб./в час
22 янв. 2019, в 20:53
6006 руб./за проект