2016-04-20 3 views
0

Я использую экспресс-фреймворк для захвата ссылок с некоторой веб-страницы, и я добавляю эти ссылки в Array. Я использую async для печати конечного результата, но когда я печатаю свой массив, я получаю список объектов.JavaScript добавить объекты в массив и итерации

Результат функции отсортированной:

Finall: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Objec 
t] 

Как повторению этого массива объектов? Это мой код:

router.route('/send') 
    .post(function(req, res){ 
     async.series([ function(callback){ 
      var url = req.body.url; 
      var items = []; 

      console.log(url); 
      if(url.length>=1) { 

       if (isURL(url)) { 
       console.log('OK'); 
       res.sendStatus(200); 

       request(url, function(err, resp, body){ 

        $ = cheerio.load(body); 
        links = $('a.offer-title'); 
        $(links).each(function(i, link){ 
        items[i] = new itemParam($(link).text(),12) 
        }); 
        callback(false, items); 

       }); 

       } else { 
       errorHandling(res, 401,"Invalid url"); 
       } 
      }else{ 
       errorHandling(res, 401,"Invalid url"); 
      } 
     } 
     ], 
     /* 
     * Collate results 
     */ 
     function(err, p) { 
      console.log("Finall: " + p[0]); 

     } 
    ); 
    }); 
+0

эм, вы пробовали петлю? – Bergi

+0

Да, я пробую с циклом. ' for (var key in p) { if (p.hasOwnProperty (ключ)) { console.log (ключ +" -> "+ p [ключ]); } } ' – lukassz

+2

WTH Вы используете' async.series' здесь? Кроме того, вы всегда должны называть «обратный вызов» вместо того, чтобы сразу перейти в «errorHandling». – Bergi

ответ

2

вот один простой способ сделать это:

const request = require('request'), 
     cheerio = require('cheerio') 

const scrape = (url) => { 
    return new Promise((resolve, reject) => { 
     let links = [] // collect all links here 
     request(url, (err, res, body) => { 
      if (err) { 
       return reject(err) 
      } 
      let $ = cheerio.load(body) 
      $('a').each(function() { // use any selector you like 
       links.push($(this).attr('href')) // ...and extract whatever you like 
      }) 
      resolve(links) 
     }) 
    }) 
} 

scrape('http://google.com?q=javascript') 
    .then(links => { 
     // handle links 
     console.log(links) 
    }) 
    .catch(err => { 
     // handle error 
    }) 
Смежные вопросы