J'ai ceci:
map = ranks.map((row, r) => (
row.map((rank, i) => {
return [element(r, i, state, rank, toggled, onClick)];
})
));
Il cartographie à travers un tableau à 2 dimensions. Après chaque ligne, j'aimerais insérer <div class="clearfix"></div>
.
Je pense que si je pouvais obtenir le dernier index pour chaque ligne, je pourrai donc l’utiliser dans le rappel de mappage de lignes. Quelqu'un peut-il me montrer comment le faire?
const rowLen = row.length;
row.map((rank, i) => {
if (rowLen === i + 1) {
// last one
} else {
// not last one
}
})
Comme LeoYuan 袁力皓 a répondu, c'est la bonne réponse, mais cela peut être un peu amélioré.map
accepte une fonction avec un troisième paramètre, qui est le tableau itéré lui-même.
row.map((rank, i, arr) => {
if (arr.length - 1 === i) {
// last one
} else {
// not last one
}
});
Utiliser un arr.length
au lieu de row.length
est une approche meilleure et correcte pour plusieurs raisons:
Lorsque vous souhaitez fournir un tableau explicite, cela fonctionnera également. Par exemple.
[1,2,3,4].map((rank, i, arr) => {
if (arr.length - 1 === i) {
// last one
} else {
// not last one
}
});
Si vous souhaitez déplacer le rappel en dehors de la portée map
(principalement pour de meilleures performances), il sera faux d'utiliser row.length
comme il est hors de portée. Par exemple. dans le cas de l'OP:
const mapElement = (rowIndex, state, toggled, onClick) => {
return (rank, i, arr) => {
let lastIndex = arr.length - 1;
return [element(rowIndex, i, state, rank, toggled, onClick, lastIndex)];
};
};
map = ranks.map((row, r) => row.map(mapElement(r, state, toggled, onClick)));
Une légère amélioration par rapport à la réponse acceptée:
const lastIndex = row.length - 1;
row.map((rank, i) => {
if (i === lastIndex) {
// last one
} else {
// not last one
}
})
Cela supprime l'arithmétique de l'intérieur de la boucle.
vous pouvez vérifier le dernier index avec la longueur de votre tableau. voici une logique
var randomnumber = Math.floor(Math.random() * (100 - 10 + 1)) + 10
console.log("your last index is dynamic, ehich is ",randomnumber-1);
let arry = [];
for (i=1;i<randomnumber;i++){
arry.Push(i)
}
arry.map((data,index)=>{
if(index == arry.length-1 ){
console.log("last index data ",data)
}
else{
console.log("remain data ",data)
}
})
console.log("your last index is dynamic, which is ",randomnumber-1);
const array = ['Apple','orange','banana'];
array.map((element, index) => {
//Last element
if (index === array.length - 1) {
return `${element}.`;
}
//Another elements
return `${element}, `;
})}
Retournera Apple, orange, banana.