Ich kann nicht für das Leben von mir, den Unterschied zwischen diesen beiden Blöcken von Code herauszufinden:Unterschiedliche Ausgabe von .map() und .each()
var text = [];
$(".article-text p").each(function() {
text.push($(this).text());
});
Und
var text = $('.article-text p').map(function() {
return $(this).text();
});
Sie schauen für mich, wie sie die gleiche genaue Ausgabe produzieren, wenn sie in der Konsole auf the following page geprüft werden. Der erste kann jedoch von JSON.stringify
ausgeführt werden, und der zweite nicht.
Meine Fehlermeldung in dem Crawler sagt
Error invoking user-provided 'pageFunction': Error: TypeError: JSON.stringify cannot serialize cyclic structures.
Meine Fehlermeldung in der Konsole sagt:
Uncaught DOMException: Blocked a frame with origin " http://yaledailynews.com " from accessing a cross-origin frame. at JSON.stringify() at :1:6
Wenn ich die zwei Objekte zu vergleichen, sie sehen genau gleich aus, mit der Ausnahme, dass der zweite hat eine context
Eigenschaft. Ich habe diese Eigenschaft gelöscht, aber die Fehler bleiben bestehen.
[ '$ .map()'] (https://api.jquery.com/map/) gibt ein Objekt jQuery: „_Als der Rückgabewert ist ein Objekt jQuery , das ein Array enthält, ist es sehr üblich, .get() im Ergebnis aufzurufen, um mit einem einfachen Array zu arbeiten._ " – Andreas
Wenn eine jQuery-Methode etwas Unerwartetes oder Unerwartetes zu tun scheint, sehen Sie sich die Dokumentation an. Es ist nicht perfekt, aber es ist sehr gut und dokumentiert eindeutig, was die Methode macht, welche Argumente sie erwarten und was sie zurückgibt. –
@Andreas mein schlecht, du hast Recht :) – nem035