Les tableaux viennent avec beaucoup de méthodes. Pour faciliter les choses, dans ce chapitre, ils ont été divisés en groupes.
Ajouter/Supprimer des éléments
Nous connaissons déjà des méthodes qui ajoutent et suppriment des éléments au début ou à la fin :
arr.push(...items)â ajoute des éléments à la fin,arr.pop()â supprime un élément à la fin,arr.shift()â supprime un élément au début,arr.unshift(...items)â ajouter des éléments au début.
En voici quelques autres.
splice
Comment supprimer un élément du tableau ?
Les tableaux sont des objets, nous pouvons donc utiliser delete :
let arr = ["I", "go", "home"];
delete arr[1]; // supprime "go"
alert( arr[1] ); // undefined
// maintenant arr = ["I", , "home"];
alert( arr.length ); // 3
Lâélément a été supprimé, mais le tableau a toujours 3 éléments, on peut voir que arr.length == 3
Câest normal, car delete obj.key supprime une valeur par la clé. Câest tout ce que ça fait. Câest donc parfait pour les objets. Mais pour les tableaux, nous souhaitons généralement que le reste des éléments se déplace et occupe la place libérée. Nous nous attendons à avoir un tableau plus court maintenant.
Des méthodes spéciales doivent donc être utilisées.
La méthode arr.splice est un couteau suisse pour les tableaux. Elle peut tout faire : ajouter, supprimer et remplacer des éléments.
La syntaxe est la suivante :
arr.splice(start[, deleteCount, elem1, ..., elemN])
Il a modifié arr à partir de lâindex start : supprime les éléments deleteCount puis insère elem1, ..., elemN à leur place. Renvoie le tableau des éléments supprimés.
Cette méthode est facile à comprendre avec des exemples.
Commençons par la suppression :
let arr = ["I", "study", "JavaScript"];
arr.splice(1, 1); // à partir de l'index 1 supprime 1 élément
alert( arr ); // ["I", "JavaScript"]
Facile, non ? à partir de lâindex 1, il a supprimé 1 élément.
Dans lâexemple suivant, nous supprimons 3 éléments et les remplaçons par les deux autres :
let arr = ["I", "study", "JavaScript", "right", "now"];
// supprime les 3 premiers éléments et les remplace par d'autre
arr.splice(0, 3, "Let's", "dance");
alert( arr ) // maintenant ["Let's", "dance", "right", "now"]
Nous pouvons voir ici que splice renvoie le tableau des éléments supprimés :
let arr = ["I", "study", "JavaScript", "right", "now"];
// supprime les 2 premiers éléments
let removed = arr.splice(0, 2);
alert( removed ); // "I", "study" <-- tableau des éléments supprimés
La méthode splice est également capable dâinsérer les éléments sans aucune suppression. Pour cela, nous devons définir nombreDeSuppression sur 0 :
let arr = ["I", "study", "JavaScript"];
// de l'index 2
// supprime 0
// et ajoute "complex" et "language"
arr.splice(2, 0, "complex", "language");
alert( arr ); // "I", "study", "complex", "language", "JavaScript"
Ici et dans dâautres méthodes de tableau, les index négatifs sont autorisés. Ils spécifient la position à partir de la fin du tableau, comme ici :
let arr = [1, 2, 5];
// de l'index -1 (un déplacement à partir de la fin)
// supprime 0 éléments,
// puis insère 3 et 4
arr.splice(-1, 0, 3, 4);
alert( arr ); // 1,2,3,4,5
slice
La méthode arr.slice est beaucoup plus simple et est similaire à la méthode arr.splice.
La syntaxe est la suivante :
arr.slice([start], [end])
Il retourne un nouveau tableau dans lequel il copie tous les éléments index qui commencent de start à end (sans compter end). Les deux start et end peuvent être négatifs, dans ce cas, la position depuis la fin du tableau est supposée.
Cela ressemble à une méthode string str.slice, mais au lieu de sous-chaînes de caractères, cela crée des sous-tableaux.
Par exemple :
let arr = ["t", "e", "s", "t"];
alert( arr.slice(1, 3) ); // e,s (copie de 1 Ã 3, 3 non compris)
alert( arr.slice(-2) ); // s,t (copie de -2 jusqu'Ã la fin)
Nous pouvons aussi lâappeler sans arguments : arr.slice() pour créer une copie de arr. Cela est souvent utilisé pour obtenir une copie pour dâautres transformations qui ne devraient pas affecter le tableau dâorigine.
concat
La méthode arr.concat crée un nouveau tableau qui inclut les valeurs dâautres tableaux et des éléments supplémentaires.
La syntaxe est la suivante :
arr.concat(arg1, arg2...)
Il accepte nâimporte quel nombre dâarguments â des tableaux ou des valeurs.
Le résultat est un nouveau tableau contenant les éléments arr, puis arg1, arg2, etc.
Si un argument argN est un tableau, alors tous ses éléments sont copiés. Sinon, lâargument lui-même est copié.
Par exemple :
let arr = [1, 2];
// créer un tableau à partir de arr et [3,4]
alert( arr.concat([3, 4]) ); // 1,2,3,4
// créer un tableau à partir de arr et [3,4] et [5,6]
alert( arr.concat([3, 4], [5, 6]) ); // 1,2,3,4,5,6
// créer un tableau à partir de arr et [3,4], puis ajoute les valeurs 5 et 6
alert( arr.concat([3, 4], 5, 6) ); // 1,2,3,4,5,6
Normalement, il ne copie que les éléments des tableaux. Les autres objets, même sâils ressemblent à des tableaux, sont ajoutés dans leur ensemble :
let arr = [1, 2];
let arrayLike = {
0: "something",
length: 1
};
alert( arr.concat(arrayLike) ); // 1,2,[object Object]
⦠Mais si un objet de type tableau (array-like) a une propriété spéciale Symbol.isConcatSpreadable, alors il est traité comme un tableau par concat : ses éléments sont ajoutés à la place :
let arr = [1, 2];
let arrayLike = {
0: "something",
1: "else",
[Symbol.isConcatSpreadable]: true,
length: 2
};
alert( arr.concat(arrayLike) ); // 1,2,something,else
Itérer: forEach (pourChaque)
La méthode arr.forEach permet dâexécuter une fonction pour chaque élément du tableau.
La syntaxe :
arr.forEach(function(item, index, array) {
// ... fait quelques chose avec l'élément
});
Par exemple, cela montre chaque élément du tableau :
// pour chaque élément appel l'alerte
["Bilbo", "Gandalf", "Nazgul"].forEach(alert);
Et ce code est plus élaboré sur leurs positions dans le tableau cible :
["Bilbo", "Gandalf", "Nazgul"].forEach((item, index, array) => {
alert(`${item} est à l'index ${index} dans ${array}`);
});
Le résultat de la fonction (sâil en renvoie) est jeté et ignoré.
Recherche dans le tableau
Voyons maintenant les méthodes de recherche dans un tableau.
indexOf/lastIndexOf et includes
Les méthodes arr.indexOf, et arr.includes ont la même syntaxe et utilisent essentiellement la même chose que leurs équivalents de chaîne, mais fonctionnent sur des éléments au lieu de caractères :
arr.indexOf(item, from)recherche lâélémentitemà partir de lâindexfrom, et retourne lâindex où il a été trouvé, sinon il retourne-1.arr.includes(item, from)â recherche lâélémentitemen commençant par lâindexfrom, retournetruesi il est trouvé.
Habituellement, ces méthodes sont utilisées avec un seul argument : lâélément à rechercher. Par défaut, la recherche sâeffectue depuis le début.
Par exemple :
let arr = [1, 0, false];
alert( arr.indexOf(0) ); // 1
alert( arr.indexOf(false) ); // 2
alert( arr.indexOf(null) ); // -1
alert( arr.includes(1) ); // true
Veuillez noter que indexOf utilise lâégalité stricte === pour la comparaison. Donc, si nous cherchons âfauxâ, il trouve exactement âfauxâ et non le zéro.
Si nous voulons vérifier si item existe dans le tableau et nâavons pas besoin de lâindex, alors arr.includes est préféré.
La méthode arr.lastIndexOf est la même que indexOf, mais recherche de droite à gauche.
let fruits = ['Apple', 'Orange', 'Apple']
alert( fruits.indexOf('Apple') ); // 0 (first Apple)
alert( fruits.lastIndexOf('Apple') ); // 2 (last Apple)
includes gère NaN correctementUne caractéristique mineure mais remarquable de includes est quâil gère correctement NaN, contrairement à indexOf :
const arr = [NaN];
alert( arr.indexOf(NaN) ); // -1 (faux, devrait être 0)
alert( arr.includes(NaN) ); // true (correct)
Câest parce que includes a été ajouté à JavaScript beaucoup plus tard et utilise lâalgorithme de comparaison le plus à jour en interne.
find et findIndex/findLastIndex
Imaginez que nous ayons un tableau dâobjets. Comment pouvons-nous trouver un objet avec une condition spécifique ?
Ici la méthode arr.find(fn) se révèle vraiment pratique.
La syntaxe est la suivante :
let result = arr.find(function(item, index, array) {
// devrait retourner true si l'élément correspond à ce que nous recherchons
// pour le scénario de falsy (fausseté), renvoie undefined
});
La fonction est appelée pour chaque élément du tableau, lâun après lâautre :
itemest lâélément.indexest sont index.arrayest le tableau lui même.
Sâil renvoie true, la recherche est arrêtée, lâitem est renvoyé. Si rien nâest trouvé, undefined est renvoyé.
Par exemple, nous avons un tableau dâutilisateurs, chacun avec les champs id et name. Trouvons le premier avec lâid == 1 :
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"}
];
let user = users.find(item => item.id == 1);
alert(user.name); // John
Dans la vie réelle, les tableaux dâobjets sont une chose courante, la méthode find est donc très utile.
Notez que dans lâexemple, nous fournissons à find la fonction item => item.id == 1 avec un argument. Câest typique, les autres arguments de cette fonction sont rarement utilisés.
La méthode arr.findIndex est essentiellement la même, mais elle retourne lâindex où lâélément a été trouvé à la place de lâélément lui-même. La valeur de -1 est retournée si rien nâest trouvé.
La méthode arr.findLastIndex est comme findIndex, mais recherche de droite à gauche, similaire à lastIndexOf.
Voici un exemple :
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"},
{id: 4, name: "John"}
];
// Trouver l'index du premier John
alert(users.findIndex(user => user.name == 'John')); // 0
// Trouver l'index du dernier John
alert(users.findLastIndex(user => user.name == 'John')); // 3
filter
La méthode find recherche un seul (le premier) élément qui rend la fonction true.
Sâil y en a plusieurs, nous pouvons utiliser arr.filter(fn).
La syntaxe est à peu près identique à celle de find, mais filter renvoie un tableau dâéléments correspondants :
let results = arr.filter(function(item, index, array) {
// si true, l'item est poussé vers résultats et l'itération continue
// retourne un tableau vide si rien n'est trouvé
});
Par exemple :
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"}
];
// retourne les tableaux des deux premiers users
let someUsers = users.filter(item => item.id < 3);
alert(someUsers.length); // 2
Transformer un tableau
Passons aux méthodes qui transforment et réorganisent un tableau.
map
La méthode arr.map est lâune des plus utiles et des plus utilisées.
Elle appelle la fonction pour chaque élément du tableau et renvoie le tableau de résultats.
La syntaxe est :
let result = arr.map(function(item, index, array) {
// renvoie la nouvelle valeur au lieu de l'item
});
Par exemple, ici nous transformons chaque élément en sa longueur :
let lengths = ["Bilbo", "Gandalf", "Nazgul"].map(item => item.length)
alert(lengths); // 5,7,6
sort(fn)
La méthode arr.sort trie le tableau en place, en changeant son ordre dâélément.
Elle renvoie également le tableau trié, mais la valeur renvoyée est généralement ignorée, comme arr est lui-même modifié.
Par exemple :
let arr = [ 1, 2, 15 ];
// la méthode réordonne le contenu de arr
arr.sort();
alert( arr ); // 1, 15, 2
Avez-vous remarqué quelque chose dâétrange dans le résultat ?
Lâordre est devenu 1, 15, 2. Câest incorrect. Mais pourquoi ?
Les éléments sont triés en tant que chaînes par défaut.
Littéralement, tous les éléments sont convertis en chaînes de caractères pour comparaisons. Pour les chaînes de caractères, lâordre lexicographique est appliqué et donc "2" > "15".
Pour utiliser notre propre ordre de tri, nous devons fournir une fonction comme argument de arr.sort().
La fonction doit comparer deux valeurs arbitraires et renvoyer le résultat :
function compare(a, b) {
if (a > b) return 1; // if the first value is greater than the second
if (a == b) return 0; // if values are equal
if (a < b) return -1; // if the first value is less than the second
}
Par exemple, pour trier sous forme de nombres :
function compareNumeric(a, b) {
if (a > b) return 1;
if (a == b) return 0;
if (a < b) return -1;
}
let arr = [ 1, 2, 15 ];
arr.sort(compareNumeric);
alert(arr); // 1, 2, 15
Maintenant, ça fonctionne comme nous lâavons prévu.
Mettons cela de côté et regardons ce qui se passe. Lâarr peut être un tableau de nâimporte quoi, non ? Il peut contenir des nombres, des chaînes de caractères, des objets ou autre. Nous avons donc un ensemble de quelques items. Pour le trier, nous avons besoin dâune fonction de classement qui sache comment comparer ses éléments. La valeur par défaut est un ordre de chaîne de caractères.
La méthode arr.sort(fn) intégre lâimplémentation dâun algorithme générique de tri. Nous nâavons pas besoin de nous préoccuper de son fonctionnement interne (câest un tri rapide optimisé la plupart du temps). Il va parcourir le tableau, comparer ses éléments à lâaide de la fonction fournie et les réorganiser. Tout ce dont nous avons besoin est de fournir la fn qui effectue la comparaison.
à propos, si nous voulons savoir quels éléments sont comparés, rien ne nous empêche de les alerter :
[1, -2, 15, 2, 0, 8].sort(function(a, b) {
alert( a + " <> " + b );
return a - b;
});
Lâalgorithme peut comparer un élément à plusieurs autres dans le processus, mais il essaie de faire le moins de comparaisons possible.
En réalité, une fonction de comparaison est requise uniquement pour renvoyer un nombre positif pour dire âplus grandâ et un nombre négatif pour dire âplus petitâ.
Cela permet dâécrire des fonctions plus courtes :
let arr = [ 1, 2, 15 ];
arr.sort(function(a, b) { return a - b; });
alert(arr); // 1, 2, 15
Souvenez-vous des fonctions fléchées ? Nous pouvons les utiliser ici pour un tri plus net :
arr.sort( (a, b) => a - b );
Cela fonctionne exactement comme la version longue ci-dessus.
localeCompare pour les chaînes de caractèresSouvenez-vous de lâalgorithme de comparaison des chaînes de caractères ? Il compare les lettres par leurs codes par défaut.
Pour de nombreux alphabets, il est préférable dâutiliser la méthode str.localeCompare pour trier correctement les lettres, comme Ã.
Par exemple, trions quelques pays en allemand :
let countries = ['Ãsterreich', 'Andorra', 'Vietnam'];
alert( countries.sort( (a, b) => a > b ? 1 : -1) ); // Andorra, Vietnam, Ãsterreich (wrong)
alert( countries.sort( (a, b) => a.localeCompare(b) ) ); // Andorra,Ãsterreich,Vietnam (correct!)
reverse
La méthode arr.reverse inverse lâordre des éléments dans lâarr.
Par exemple :
let arr = [1, 2, 3, 4, 5];
arr.reverse();
alert( arr ); // 5,4,3,2,1
Il retourne également le tableau arr après lâinversion.
split et join
Voici une situation réele. Nous écrivons une application de messagerie et la personne entre dans la liste des destinataires délimités par des virgules : John, Pete, Mary. Mais pour nous, un tableau de noms serait beaucoup plus confortable quâune simple chaîne de caractères. Alors, comment lâobtenir ?
La méthode str.split(separator) fait exactement cela. Elle divise la chaîne en un tableau selon le délimiteur separator donné.
Dans lâexemple ci-dessous, nous les séparons par une virgule suivie dâun espace :
let names = 'Bilbo, Gandalf, Nazgul';
let arr = names.split(', ');
for (let name of arr) {
alert( `Un message à ${name}.` ); // Un message à Bilbo (ainsi que les autres noms)
}
La méthode split a un deuxième argument numérique facultatif â une limite sur la longueur du tableau. Sâil est fourni, les éléments supplémentaires sont ignorés. En pratique, il est rarement utilisé cependant :
let arr = 'Bilbo, Gandalf, Nazgul, Saruman'.split(', ', 2);
alert(arr); // Bilbo, Gandalf
Lâappel de split(s) avec un s vide diviserait la chaîne en un tableau de lettres :
let str = "test";
alert( str.split('') ); // t,e,s,t
Lâappel de arr.join(separator) fait lâinverse de split. Elle crée une chaîne de caractères avec les éléments de arr joints entre eux par separator.
Par exemple :
let arr = ['Bilbo', 'Gandalf', 'Nazgul'];
let str = arr.join(';'); // joint les éléments du tableau en une string en utilisant le caractère ";"
alert( str ); // Bilbo;Gandalf;Nazgul
reduce/reduceRight
Lorsque nous devons parcourir un tableau, nous pouvons utiliser forEach, for ou for..of.
Lorsque nous devons itérer et renvoyer les données pour chaque élément, nous pouvons utiliser map.
Les méthodes arr.reduce et arr.reduceRight appartiennent également à cette famille, mais sont un peu plus complexes. Ces méthodes sont utilisées pour calculer une valeur unique basée sur un tableau.
La syntaxe est la suivante :
let value = arr.reduce(function(accumulator, item, index, array) {
// ...
}, [initial]);
La fonction est appliquée à tous les éléments du tableau les uns après les autres et âreporteâ son résultat à lâappel suivant.
Les arguments :
accumulatorâ est le résultat de lâappel de fonction précédent, égal Ãinitialla première fois (siinitialest fourni).itemâ est lâélément actuel du tableau.indexâ est sa position.arrayâ est le tableau.
Lorsque la fonction est appliquée, le résultat de lâappel de fonction précédent est transmis au suivant en tant que premier argument.
Ainsi, le premier argument est lâaccumulateur qui stocke le résultat combiné de toutes les exécutions précédentes. à la fin, il devient le résultat de la fonction reduce.
Cela semble compliqué ?
Le moyen le plus simple pour comprendre câest avec un exemple.
Ici nous obtenons la somme dâun tableau sur une ligne :
let arr = [1, 2, 3, 4, 5];
let result = arr.reduce((sum, current) => sum + current, 0);
alert(result); // 15
La fonction passée à reduce utilise seulement 2 arguments, câest généralement suffisant.
Voyons en détails ce quâil se passe.
- Lors du premier passage,
sumprend la valeur deinitial(le dernier argument dereduce), égale Ã0, etcurrentcorrespond au premier élément du tableau, égal Ã1. Donc le résultat de la fonction est1. - Lors du deuxième passage,
sum = 1, nous y ajoutons le deuxième élément du tableau (2) etsumest retourné. - Au troisième passage,
sum = 3et nous y ajoutons un élément supplémentaire, et ainsi de suiteâ¦
Le flux de calcul :
Ou sous la forme dâun tableau, où chaque ligne représente un appel de fonction sur lâélément de tableau suivant :
sum |
current |
result | |
|---|---|---|---|
| premier appel | 0 |
1 |
1 |
| deuxième appel | 1 |
2 |
3 |
| troisième appel | 3 |
3 |
6 |
| quatrième appel | 6 |
4 |
10 |
| cinquième appel | 10 |
5 |
15 |
Ici, nous pouvons clairement voir comment le résultat de lâappel précédent devient le premier argument du suivant.
Nous pouvons également omettre la valeur initiale :
let arr = [1, 2, 3, 4, 5];
// Suppression de la valeur initiale de reduce (pas de 0)
let result = arr.reduce((sum, current) => sum + current);
alert( result ); // 15
Le résultat est le même. En effet, sâil nây a pas de valeur initiale, alors reduce prend le premier élément du tableau comme valeur initiale et lance lâitération à partir du deuxième élément.
Le tableau de calcul est le même que celui ci-dessus, sans la première ligne.
Mais une telle utilisation nécessite une extrême prudence. Si le tableau est vide, alors reduce appelé sans valeur initiale génèrera une erreur.
Voici un exemple :
let arr = [];
// Erreur : Réduction du tableau vide sans valeur initiale
// si la valeur initiale existait, reduce la renverrait pour l'arr vide.
arr.reduce((sum, current) => sum + current);
Il est donc conseillé de toujours spécifier la valeur initiale.
La méthode arr.reduceRight fait la même chose, mais va de droite à gauche.
Array.isArray
Les tableaux ne forment pas un type distinct du langage. Ils sont basés sur des objets.
Donc son typeof ne permet pas de distinguer un objet brut dâun tableau :
alert(typeof {}); // object
alert(typeof []); // object (pareil)
â¦Mais les tableaux sont utilisés si souvent quâil existe une méthode spéciale pour cela : Array.isArray(value). Il renvoie true si la value est un tableau, sinon il renvoie false.
alert(Array.isArray({})); // false
alert(Array.isArray([])); // true
La plupart des méthodes supportent âthisArgâ
Presque toutes les méthodes de tableau qui appellent des fonctions â comme find, filter, map, à lâexception de sort, acceptent un paramètre supplémentaire facultatif thisArg.
Ce paramètre nâest pas expliqué dans les sections ci-dessus, car il est rarement utilisé. Mais pour être complet, nous devons quand même le voir.
Voici la syntaxe complète de ces méthodes :
arr.find(func, thisArg);
arr.filter(func, thisArg);
arr.map(func, thisArg);
// ...
// thisArg est le dernier argument optionnel
La valeur du paramètre thisArg devient this pour func.
Par exemple, nous utilisons ici une méthode de lâobjet army en tant que filtre et thisArg passe le contexte :
let army = {
minAge: 18,
maxAge: 27,
canJoin(user) {
return user.age >= this.minAge && user.age < this.maxAge;
}
};
let users = [
{age: 16},
{age: 20},
{age: 23},
{age: 30}
];
// trouve les utilisateurs pour qui army.canJoin retourne true
let soldiers = users.filter(army.canJoin, army);
alert(soldiers.length); // 2
alert(soldiers[0].age); // 20
alert(soldiers[1].age); // 23
Si, dans lâexemple ci-dessus, nous utilisions users.filter(army.canJoin), alors army.canJoin serait appelée en tant que fonction autonome, avec this = undefined, ce qui entraînerait une erreur instantanée.
Un appel à users.filter(army.canJoin, army) peut être remplacé par users.filter(user => army.canJoin(user)), qui fait la même chose. Le premier est utilisé plus souvent, car il est un peu plus facile à comprendre pour la plupart des gens.
Résumé
Un cheat sheet des méthodes de tableau :
- Pour ajouter / supprimer des éléments :
push(...items)â ajoute des éléments à la fin,pop()â extrait un élément en partant de la fin,shift()â extrait un élément depuis le début,unshift(...items)â ajoute des éléments au début.splice(pos, deleteCount, ...items)â à lâindexpossupprimedeleteCountéléments et insert les élémentsitems.slice(start, end)â crée un nouveau tableau, y copie les éléments destartjusquâÃend(non inclus).concat(...items)â retourne un nouveau tableau : copie tous les membres du groupe actuel et lui ajoute des éléments. Si un desitemsest un tableau, ses éléments sont pris.
- Pour rechercher parmi des éléments :
indexOf/lastIndexOf(item, pos)â cherche lâitemà partir de la positionpos, retourne lâindex-1sâil nâest pas trouvé.includes(value)â retournetruesi le tableau contient unevalue, sinonfalse.find/filter(func)â filtre les éléments à travers la fonction, retourne la première / toutes les valeurs qui retournenttrue.findIndexest similaire Ãfind, mais renvoie lâindex au lieu dâune valeur.
- Pour parcourir les éléments :
forEach(func)â appellefuncpour chaque élément, ne retourne rien.
- Pour transformer le tableau :
map(func)â crée un nouveau tableau à partir des résultats defuncpour chaque élément.sort(func)â trie le tableau courant, puis le renvoie.reverse()â inverse le tableau courant, puis le renvoie.split/joinâ convertit une chaîne en tableau et inversement.reduce(func, initial)â calcule une valeur unique sur le tableau en appelantfuncpour chaque élément et en transmettant un résultat intermédiaire entre les appels.
- Aditionellement :
Array.isArray(value)vérifie quevalueest un tableau, si câest le cas, renvoietrue, sinonfalse.
Veuillez noter que les méthodes sort, reverse et splice modifient le tableau lui-même.
Ces méthodes sont les plus utilisées, elles couvrent 99% des cas dâutilisation. Mais il y en a encore dâautres :
-
arr.some(fn)/arr.every(fn) vérifie le tableau.
La fonction
fnest appelée sur chaque élément du tableau comme pourmap. Si nâimporte quel / tous les résultats sonttrue, il retournetrue, sinon il retournefalse.La fonction
fnest appelée sur chaque élément du tableau similaire Ãmap. Si un/tous les résultats sonttrue, renvoietrue, sinonfalse.Ces méthodes se comportent en quelque sorte comme les opérateurs
||et&&: sifnrenvoie une valeur vraie,arr.some()renvoie immédiatementtrueet arrête de parcourir les autres éléments ; sifnrenvoie une valeur fausse,arr.every()retourne immédiatementfalseet arrête également dâitérer sur les autres éléments.On peut utiliser
everypour comparer les tableaux :function arraysEqual(arr1, arr2) { return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]); } alert( arraysEqual([1, 2], [1, 2])); // true -
arr.fill(value, start, end) â remplit le tableau avec une répétition de
valuede lâindexstartÃend. -
arr.copyWithin(target, start, end) â copie ses éléments en lui-même de la position
startjusquâà la positionend, à la positiontarget(écrase les éléments éxistants). -
arr.flat(depth)/arr.flatMap(fn) créer un nouveau tableau plat à partir dâun tableau multidimensionnel.
Pour la liste complète, consultez le manuel.
à première vue, vous pouvez penser quâil existe de nombreuses méthodes difficiles à retenir. Mais en réalité, câest beaucoup plus facile quâil nây paraît.
Parcourez le cheat sheet et essayer de vous en souvenir. Ensuite, faites les exercices de ce chapitre afin de vous familiariser avec les méthodes de tableau.
Ensuite, chaque fois que vous avez besoin de faire quelque chose avec un tableau, et que vous ne savez plus comment â revenez ici, regardez le cheatsheet et trouvez la bonne méthode. Des exemples vous aideront à lâécrire correctement. Bientôt, à force de pratiquer, vous vous souviendrez automatiquement des méthodes, sans efforts particuliers.
Commentaires
<code>, pour plusieurs lignes â enveloppez-les avec la balise<pre>, pour plus de 10 lignes - utilisez une sandbox (plnkr, jsbin, codepenâ¦)