diff options
Diffstat (limited to 'files/fr/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md')
-rw-r--r-- | files/fr/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md | 100 |
1 files changed, 40 insertions, 60 deletions
diff --git a/files/fr/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md b/files/fr/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md index 4d106382a2..503c3b97af 100644 --- a/files/fr/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md +++ b/files/fr/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md @@ -10,43 +10,41 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable original_slug: Web/JavaScript/Reference/Objets_globaux/Symbol/isConcatSpreadable --- -<div>{{JSRef}}</div> +{{JSRef}} -<p>Le symbole connu <strong><code>Symbol.isConcatSpreadable</code></strong> est utilisé pour configurer la façon dont un tableau est aplati lors d'une concaténation via la méthode {{jsxref("Array.prototype.concat()")}}.</p> +Le symbole connu **`Symbol.isConcatSpreadable`** est utilisé pour configurer la façon dont un tableau est aplati lors d'une concaténation via la méthode {{jsxref("Array.prototype.concat()")}}. -<div>{{EmbedInteractiveExample("pages/js/symbol-isconcatspreadable.html")}}</div> +{{EmbedInteractiveExample("pages/js/symbol-isconcatspreadable.html")}} +## Description +Le symbole `@@isConcatSpreadable` (`Symbol.isConcatSpreadable`) peut être défini comme une propriété propre ou héritée. C'est une valeur booléenne qui contrôle le comportement des tableaux et des objets semblables à des tableaux : -<h2 id="Description">Description</h2> +- Pour les tableaux, `concat` aplatira les tableaux par défaut. `Symbol.isConcatSpreadable` peut être utilisé pour obtenir le comportement opposé. +- Pour les objets semblables à des tableaux, par défaut, il n'y aucune mise à plat. `Symbol.isConcatSpreadable` permet de forcer cette mise à plat. -<p>Le symbole <code>@@isConcatSpreadable</code> (<code>Symbol.isConcatSpreadable</code>) peut être défini comme une propriété propre ou héritée. C'est une valeur booléenne qui contrôle le comportement des tableaux et des objets semblables à des tableaux :</p> +{{js_property_attributes(0,0,0)}} -<ul> - <li>Pour les tableaux, <code>concat</code> aplatira les tableaux par défaut. <code>Symbol.isConcatSpreadable</code> peut être utilisé pour obtenir le comportement opposé.</li> - <li>Pour les objets semblables à des tableaux, par défaut, il n'y aucune mise à plat. <code>Symbol.isConcatSpreadable</code> permet de forcer cette mise à plat.</li> -</ul> +## Exemples -<p>{{js_property_attributes(0,0,0)}}</p> +### Tableaux (`Array`) -<h2 id="Exemples">Exemples</h2> +Par défaut, {{jsxref("Array.prototype.concat()")}} aplatit les tableaux pour le résultat de la concaténation : -<h3 id="Tableaux_(Array)">Tableaux (<code>Array</code>)</h3> - -<p>Par défaut, {{jsxref("Array.prototype.concat()")}} aplatit les tableaux pour le résultat de la concaténation :</p> - -<pre class="brush: js">var alpha = ['a', 'b', 'c'], +```js +var alpha = ['a', 'b', 'c'], numérique = [1, 2, 3]; var alphaNumérique = alpha.concat(numérique); console.log(alphaNumérique); // Résultat : ['a', 'b', 'c', 1, 2, 3] -</pre> +``` -<p>En définissant <code>Symbol.isConcatSpreadable</code> avec <code>false</code>, on peut désactiver le comportement par défaut :</p> +En définissant `Symbol.isConcatSpreadable` avec `false`, on peut désactiver le comportement par défaut : -<pre class="brush: js">var alpha = ['a', 'b', 'c'], +```js +var alpha = ['a', 'b', 'c'], numérique = [1, 2, 3]; numérique[Symbol.isConcatSpreadable] = false; @@ -54,13 +52,14 @@ var alphaNumérique = alpha.concat(numérique); console.log(alphaNumérique); // Résultat: ['a', 'b', 'c', [1, 2, 3] ] -</pre> +``` -<h3 id="Objets_semblables_à_des_tableaux">Objets semblables à des tableaux</h3> +### Objets semblables à des tableaux -<p>Pour les objets semblables à un tableau, par défaut, il n'y a pas de fusion. Il faut donc que <code>Symbol.isConcatSpreadable</code> vaille <code>true</code> pour aplatir le tableau :</p> +Pour les objets semblables à un tableau, par défaut, il n'y a pas de fusion. Il faut donc que `Symbol.isConcatSpreadable` vaille `true` pour aplatir le tableau : -<pre class="brush: js">var x = [1, 2, 3]; +```js +var x = [1, 2, 3]; var fauxTableau = { [Symbol.isConcatSpreadable]: true, @@ -70,40 +69,21 @@ var fauxTableau = { } x.concat(fauxTableau); // [1, 2, 3, "coucou", "monde"] -</pre> - -<div class="note"> -<p><strong>Note :</strong> La propriété <code>length</code> indique ici le nombre de propriétés à ajouter au tableau.</p> -</div> - -<h2 id="Spécifications">Spécifications</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Spécification</th> - <th scope="col">État</th> - <th scope="col">Commentaires</th> - </tr> - <tr> - <td>{{SpecName('ES2015', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Définition initiale.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td>Aucune modification.</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> - -<p>{{Compat("javascript.builtins.Symbol.isConcatSpreadable")}}</p> - -<h2 id="Voir_aussi">Voir aussi</h2> - -<ul> - <li>{{jsxref("Array.prototype.concat()")}}</li> -</ul> +``` + +> **Note :** La propriété `length` indique ici le nombre de propriétés à ajouter au tableau. + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}} | {{Spec2('ESDraft')}} | Aucune modification. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Symbol.isConcatSpreadable")}} + +## Voir aussi + +- {{jsxref("Array.prototype.concat()")}} |