Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Objets natifs standards
  5. Array
  6. from()

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

Array : méthode statique from()

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨septembre 2015⁩.

La méthode statiqueArray.from() crée une nouvelle instance d'Array (copie superficielle) à partir d'unobjet itérable ou d'unobjet semblable à un tableau.

Exemple interactif

console.log(Array.from("toto"));// Sortie attendue : Array ["f", "o", "o"]console.log(Array.from([1, 2, 3], (x) => x + x));// Sortie attendue : Array [2, 4, 6]

Syntaxe

js
Array.from(items)Array.from(items, mapFn)Array.from(items, mapFn, thisArg)

Paramètres

items

Un objet itérable ou un objet semblable à un tableau à convertir en un tableau.

mapFnFacultatif

Une fonction appelée sur chaque élément du tableau. Si elle est fournie, chaque valeur à ajouter au tableau est d'abord transmise à cette fonction, et la valeur de retour demapFn est ajoutée au tableau à la place. La fonction est appelée avec les arguments suivants :

element

L'élément en cours de traitement dans le tableau.

index

L'indice de l'élément en cours de traitement dans le tableau.

thisArgFacultatif

La valeur à utiliser commethis lors de l'exécution de la fonctionmapFn.

Valeur de retour

Une nouvelle instance deArray.

Description

Array.from() permet de créer des tableaux à partir :

  • d'objets itérables (des objets commeMap etSet) ; ou, si l'objet n'est pas itérable,
  • d'objets semblables à des tableaux (objets avec une propriétélength et des éléments indexés).

Pour convertir un objet ordinaire qui n'est ni itérable ni semblable à un tableau en un tableau (en énumérant ses clés, valeurs ou les deux), utilisezObject.keys(),Object.values() ouObject.entries(). Pour convertir unobjet itérable asynchrone en un tableau, utilisezArray.fromAsync().

Array.from() ne crée jamais de tableau creux. Si l'objetitems n'a pas certaines propriétés d'index, elles deviennentundefined dans le nouveau tableau.

Array.from() possède un paramètre optionnelmapFn, qui permet d'exécuter une fonction sur chaque élément du tableau en cours de création, de façon similaire àmap(). Plus précisément,Array.from(obj, mapFn, thisArg) a le même résultat queArray.from(obj).map(mapFn, thisArg), sauf qu'il ne crée pas de tableau intermédiaire, etmapFn ne reçoit que deux arguments (element,index) sans le tableau complet, car celui-ci est encore en construction.

Note :Ce comportement est particulièrement important pour lestableaux typés, car le tableau intermédiaire aurait nécessairement des valeurs tronquées pour correspondre au type approprié.Array.from() est implémenté pour avoir la même signature queTypedArray.from().

La méthodeArray.from() est une méthode de fabrique générique. Par exemple, si une sous-classe d'Array hérite de la méthodefrom(), la méthode héritée retournera de nouvelles instances de la sous-classe au lieu d'instances d'Array. En fait, la valeur dethis peut être n'importe quelle fonction constructeur qui accepte un seul argument représentant la longueur du nouveau tableau. Lorsqu'un objet itérable est passé commeitems, le constructeur est appelé sans argument ; lorsqu'un objet semblable à un tableau est passé, le constructeur est appelé avec lalongueur normalisée de l'objet. La longueur finale sera à nouveau définie à la fin de l'itération. Si la valeur dethis n'est pas une fonction constructeur, le constructeur natifArray est utilisé à la place.

Exemples

Tableau à partir d'une chaîne de caractères

js
Array.from("toto");// [ "t", "o", "t", "o" ]

Tableau à partir d'un ensemble

js
const collection = new Set(["toto", "tata", "tati", "toto"]);Array.from(collection);// [ "toto", "tata", "tati" ]

Tableau à partir d'une table de correspondance

js
const map = new Map([  [1, 2],  [2, 4],  [4, 8],]);Array.from(map);// [[1, 2], [2, 4], [4, 8]]const mapper = new Map([  ["1", "a"],  ["2", "b"],]);Array.from(mapper.values());// ['a', 'b'];Array.from(mapper.keys());// ['1', '2'];

Tableau à partir d'uneNodeList

js
// Créer un tableau à partir d'une propriété des éléments du DOMconst images = document.querySelectorAll("img");const sources = Array.from(images, (image) => image.src);const insecureSources = sources.filter((link) => link.startsWith("http://"));

Tableau à partir d'un objet semblable à un tableau (arguments)

js
function f() {  return Array.from(arguments);}f(1, 2, 3);// [ 1, 2, 3 ]

Utiliser des fonctions fléchées etArray.from()

js
// Utiliser une fonction fléchée comme fonction de transformation pour// manipuler les élémentsArray.from([1, 2, 3], (x) => x + x);// [2, 4, 6]// Générer une séquence de nombres// Comme le tableau est initialisé avec `undefined` à chaque position,// la valeur de `v` ci-dessous sera `undefined`Array.from({ length: 5 }, (v, i) => i);// [0, 1, 2, 3, 4]

Générateur de séquence (intervalle)

js
// Fonction génératrice de séquence (souvent appelée « intervalle », cf. Python, Clojure, etc.)const range = (start, stop, step) =>  Array.from(    { length: Math.ceil((stop - start) / step) },    (_, i) => start + i * step,  );// Générer une séquence de nombres de 0 (inclus) à 5 (exclus), en incrémentant de 1range(0, 5, 1);// [0, 1, 2, 3, 4]// Générer une séquence de nombres de 1 (inclus) à 10 (exclus), en incrémentant de 2range(1, 10, 2);// [1, 3, 5, 7, 9]// Générer l'alphabet latin en profitant du fait qu'il soit ordonné comme une séquencerange("A".charCodeAt(0), "Z".charCodeAt(0) + 1, 1).map((x) =>  String.fromCharCode(x),);// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]

Utiliserfrom() avec d'autres fonctions constructrices que la fonction constructeur de tableau

La méthodefrom() peut être appelée sur n'importe quelle fonction constructeur qui accepte un seul argument représentant la longueur du nouveau tableau.

js
function NotArray(len) {  console.log("NotArray appelé avec la longueur", len);}// Objet itérableconsole.log(Array.from.call(NotArray, new Set(["toto", "tata", "tati"])));// NotArray appelé avec la longueur undefined// NotArray { '0': 'toto', '1': 'tata', '2': 'tati', length: 3 }// Objet semblable à un tableauconsole.log(Array.from.call(NotArray, { length: 1, 0: "toto" }));// NotArray appelé avec la longueur 1// NotArray { '0': 'toto', length: 1 }

Lorsque la valeur dethis n'est pas un constructeur, un objetArray ordinaire est retourné.

js
console.log(Array.from.call({}, { length: 1, 0: "toto" })); // [ 'toto' ]

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-array.from

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp