2017-12-16 5 views
-1

Ich versuche, Bilder von einer Website zu kratzen. Ich möchte nur 15 Bilder von dieser Seite. Stattdessen werden alle Bilder in meinem Bilderordner gespeichert. Wie kann ich aus der Schleife ausbrechen? Ich benutze nodejs.Wie Schleife in NodeJs brechen?

function (res) { 
    mkdirp('public/images/'+req.body.tags, function (err) { 
     if (err) console.error(err); 
     else { 
      let count = 1; 
      for(i=0;i<res.length;i++){ 
       var k = res[i].url.slice((res[i].url.lastIndexOf(".") - 1 >>> 0) + 2).slice(0,3); 
       if (count<=15){ 
       if (k=="jpg" || k=="png") { 
        console.log(count) ; 
        request (res[i].url).pipe(fs.createWriteStream('public/images/'+req.body.tags+'/'+req.body.tags+i)) 
        count++; 
       } 
       } else { 
       break; 
       }         
     }     
    }); 
} 

Hier break funktioniert nicht. Es speichert weiterhin mehr als 15 Bilder. Wo gehe ich falsch?

+0

'for (i = 0; i mplungjan

+0

'Count ++' nicht immer versuchen, nicht funktionieren 'count = Zähle +1. Und nenne deine Variablen nicht 'k'. Sie haben die längste Codezeile aller Zeiten und wählen dann die Variable 'k' – Pavlo

+2

@Pavlo What? _count ++ funktioniert nicht immer _ ???? Bitte melden Sie einen Fehler mit der Knoten-Community – mplungjan

Antwort

0

Normalerweise würde ich Blick sagen, nur filter das Array, dann slice das Array, dann forEach über sie, und du bist gut. Aber Sie möchten den ursprünglichen Index beibehalten, so dass es etwas komplizierter wird. Aber dies sollte funktionieren:

function (res) { 
    mkdirp("public/images/" + req.body.tags, function (err) { 
     if (err) { 
      console.error(err); 
     } else { 
      res 
       .map((r, i) => ({ resource: r, index: i })) 
       .filter(item => { 
        var ext = item.resource.url.substr(item.resource.url.lastIndexOf(".") + 1); 
        return ext === "jpg" || ext === "png"; 
       }) 
       .slice(0, 15) 
       .forEach(item => { 
        request(item.resource.url) 
         .pipe(fs.createWriteStream(
          "public/images/" + 
          req.body.tags + "/" + 
          req.body.tags + item.index)); 
       }); 
     } 
    } 
} 
+0

Ich hatte es eilig und dachte nicht direkt nach. Und an dieser Stelle wird einer von ihnen als gelöscht angezeigt. –