Ich arbeite mit Javascript (ES6) / FaceBook und versuche, die ersten 3 Elemente eines Arrays zu erhalten, deren Größe variiert. Ich würde gerne das Äquivalent von Linq nehmen (n).
In meiner Jsx-Datei habe ich Folgendes:
var items = list.map(i => {
return (
<myview item={i} key={i.id} />
);
});
Dann, um die ersten 3 Gegenstände zu bekommen, habe ich versucht
var map = new Map(list);
map.size = 3;
var items = map(i => {
return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />);
});
Dies hat nicht funktioniert, da die Karte keine festgelegte Funktion hat.
Können Sie bitte helfen?
javascript
reactjs
user1526912
quelle
quelle
list.slice(0, 3);
und es dann wiederholen?Antworten:
Ich glaube, was Sie suchen, ist:
quelle
n
Verwenden Sie, um die ersten Elemente eines Arrays abzurufenquelle
slice
Funktion für Arrays eine flache Kopie des Arrays zurückgibt und das ursprüngliche Array nicht ändert. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Dies mag überraschend sein, aber die
length
Eigenschaft eines Arrays wird nicht nur zum Abrufen der Anzahl der Array-Elemente verwendet, sondern ist auch beschreibbar und kann zum Festlegen der MDN-Linklänge des Arrays verwendet werden . Dadurch wird das Array mutiert.Wenn das aktuelle Array nicht mehr benötigt wird und Sie sich nicht um Unveränderlichkeit kümmern oder keinen Speicher zuweisen möchten, dh für ein Spiel, ist der schnellste Weg
ein Array leeren
quelle
arr = []
?Versuchen Sie dies nicht mit einer Kartenfunktion. Die Kartenfunktion sollte verwendet werden, um Werte von einer Sache zur anderen abzubilden. Wenn die Anzahl der Ein- und Ausgänge übereinstimmt.
Verwenden Sie in diesem Fall die Filterfunktion, die auch für das Array verfügbar ist. Die Filterfunktion wird verwendet, wenn Sie selektiv Werte für bestimmte Kriterien verwenden möchten. Dann können Sie Ihren Code wie schreiben
quelle
Sie können mithilfe
index
eines Arrays filtern .quelle
.filter
allein ist keine gute Wahl, zumindest nicht, wenn das Eingabearray lang sein könnte..filter
Durchläuft jedes Element des Arrays und überprüft seinen Zustand..slice
würde dies nicht tun, sondern nur die ersten n Elemente extrahieren und dann die Verarbeitung stoppen - was definitiv das ist, was Sie für eine lange Liste wollen. (Wie @elQueFaltaba bereits in Kommentaren zu einer anderen Antwort sagte.)Folgendes hat bei mir funktioniert.
Hier ist ein Beispiel
quelle
slice
, im zweiten verwenden Siesplice
.["Apple", "Mango"]
. Der erste Teil des Slice ist nicht "wo mit dem Löschen begonnen werden soll", sondern wo der Slice gestartet werden soll. Das ursprüngliche Array wird nicht geändert und nichts gelöscht.Mit https://github.com/Siderite/LInQer können Sie Enumerable.from (Liste) .take (3) .toArray ();
quelle
Verwenden Sie Filter
Nicht die beste Vorgehensweise, aber ein anderer Weg
const cutArrByN = arr.filter((item, idx) => idx < n);
quelle