Je travaille avec Javascript (ES6) / FaceBook et essaie d'obtenir les 3 premiers éléments d'un tableau dont la taille varie. Je voudrais faire l'équivalent de Linq take (n).
Dans mon fichier Jsx, j'ai les éléments suivants:
var items = list.map(i => {
return (
<myview item={i} key={i.id} />
);
});
Ensuite, pour obtenir les 3 premiers articles que j'ai essayés
var map = new Map(list);
map.size = 3;
var items = map(i => {
return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />);
});
Cela n'a pas fonctionné car la carte n'a pas de fonction définie.
Peux-tu aider s'il te plait?
javascript
reactjs
user1526912
la source
la source
list.slice(0, 3);
et ensuite répéter ça?Réponses:
Je crois que ce que vous recherchez est:
la source
Pour obtenir les premiers
n
éléments d'un tableau, utilisezla source
slice
fonction sur les tableaux renvoie une copie superficielle du tableau et ne modifie pas le tableau d'origine. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Cela peut être surprenant, mais la
length
propriété d'un tableau n'est pas seulement utilisée pour obtenir le nombre d'éléments du tableau, mais elle est également accessible en écriture et peut être utilisée pour définir la longueur du lien MDN du tableau . Cela mutera le tableau.Si le tableau actuel n'est plus nécessaire et que vous ne vous souciez pas de l'immuabilité ou que vous ne voulez pas allouer de mémoire, c'est-à-dire que pour un jeu, le moyen le plus rapide est
vider un tableau
la source
arr = []
?N'essayez pas de le faire en utilisant une fonction de carte. La fonction de carte doit être utilisée pour mapper des valeurs d'une chose à une autre. Lorsque le nombre d'entrées et de sorties correspond.
Dans ce cas, utilisez la fonction de filtre qui est également disponible sur le tableau. La fonction de filtre est utilisée lorsque vous souhaitez prendre de manière sélective des valeurs en usinant certains critères. Ensuite, vous pouvez écrire votre code comme
la source
Vous pouvez filtrer en utilisant un
index
tableau.la source
.filter
seul n'est pas un excellent choix, du moins pas si le tableau d'entrée peut être long..filter
parcourt chaque élément du tableau en vérifiant son état..slice
ne ferait pas cela, mais extrairait simplement les n premiers éléments puis arrêterait le traitement - ce qui serait certainement ce que vous voulez pour une longue liste. (Comme @elQueFaltaba l'a déjà dit dans les commentaires d'une autre réponse.)Ce qui suit a fonctionné pour moi.
Voici un exemple
la source
slice
mais dans le second que vous utilisezsplice
.["Apple", "Mango"]
. La première partie de la tranche n'est pas "où commencer la suppression", c'est où commencer la tranche. Il ne modifie pas le tableau d'origine et ne supprimera rien.Avec https://github.com/Siderite/LInQer, vous pouvez accéder à Enumerable.from (list) .take (3) .toArray ();
la source
Utiliser un filtre
Pas la meilleure pratique mais une autre façon
const cutArrByN = arr.filter((item, idx) => idx < n);
la source