Maison > interface Web > js tutoriel > Opérateur d'étalement et de repos

Opérateur d'étalement et de repos

WBOY
Libérer: 2024-08-21 06:10:05
original
1224 Les gens l'ont consulté

Spread & Rest Operator

  • Formez un nouveau tableau à partir d'un tableau existant avec moins de bruit de caractères.
  • Spread extrait les éléments sous forme de valeurs. C'est une fonction immuable.
  • [] est le moyen d'écrire de nouveaux tableaux. Par conséquent, la propagation ne modifie pas le tableau d'origine.
  • Spread fonctionne sur tous les itérables, pas seulement sur les tableaux.
  • Itérables : String, Array, Map, Set, c'est-à-dire principalement des structures de données intégrées, à l'exception du type de données objet.
  • Différence par rapport à la déstructuration : extrait tous les éléments d'un tableau et ne crée pas de nouvelles variables, utilisées uniquement aux endroits qui nécessitent des valeurs CSV.
  • UTILISÉ lorsque nous construisons un tableau ou lorsque nous transmettons des valeurs dans une fonction.
const nums = [5,6,7];
const newNums = [1,2, nums[0],nums[1],nums[2]];
console.log(newNums); // [ 1, 2, 5, 6, 7 ]

is reduced to 

const nums = [5,6,7];
const newNums = [1,2, ...nums];
console.log(newNums); // [ 1, 2, 5, 6, 7 ]
console.log(...newNums); // 1 2 5 6 7
Copier après la connexion

1. Fusionner deux tableaux ensemble

const arr1 = [1,2,3,4,5];
const arr2 = [6,7,8,9];

let nums = [...arr1,...arr2];
nums; // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]


const firstname = "Peter";
const fullName = [...firstname,' ',"P."];
fullName; // [ 'P', 'e', 't', 'e', 'r', ' ', 'P.' ]

console.log(...firstname); // 'P' 'e' 't' 'e' 'r'
Copier après la connexion
  • SOURCE d'ERREUR : l'opérateur Spread ne fonctionne pas à l'intérieur d'une chaîne de modèle car la chaîne de modèle n'attend pas plusieurs valeurs à l'intérieur.

2. Création de copies superficielles de tableaux

const girl = {
  name: 'Melania',
  friends: ['Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya']
};

const frnz = [...girl.friends];
console.log(frnz); // [ 'Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya' ]
console.log(girl.friends); // [ 'Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya' ]
Copier après la connexion

Spread fonctionne également sur les objets même s'ils ne sont pas itérables.

let male = {
  "firstName": "Gangadhar",
  "lastName": "Shaktimaan"
}

let female = {
  "firstName": "Geeta",
  "lastName": "Vishwas"
}

let x = {...male, born: 1950};
let y = {...female, born: 1940};

x; // { firstName: 'Gangadhar',   lastName: 'Shaktimaan',   born: 1950 }
y; // { firstName: 'Geeta',  lastName: 'Vishwas',  born: 1940 }```




## Shallow Copy of objects:

let male = {
  "firstName": "Gangadhar",
  "lastName": "Shaktimaan"
}

let character = {...male, firstName: 'Wonderwoman'};

male;         // { firstName: 'Gangadhar', lastName: 'Shaktimaan' }
character;    // { firstName: 'Wonderwoman', lastName: 'Shaktimaan' }

- First name for character object is changed although it was extracted from male object


Copier après la connexion

Modèle de repos et paramètres de repos :

  • Rest fait le contraire de spread mais a la même syntaxe que spread.
  • Spread était utilisé pour créer de nouveaux tableaux ou transmettre des valeurs à un fn. dans les deux cas, la propagation a été utilisée pour développer les éléments dans les deux cas.
  • Rest utilise la même syntaxe mais pour condenser ces valeurs en une seule
  • Spread sert à décompresser les éléments d'un tableau, rest sert à regrouper les éléments dans un tableau. ```

Différence de syntaxe des opérateurs spread et rest :
Opérateur de propagation => ... sont utilisés sur le RHS de l'opérateur d'affectation.
const nums = [9,4, ...[2,7,1]];

Opérateur de repos => ...sera sur le LHS d'affectation opérateur avec déstructuration
const [x,y,...z] = [9,4, 2,7,1];

## Rest syntax collects all the elements after the last elements into an array. Doesn't include any skipped elements. 
- Hence, it should be the last element in the destructuring assignment.
- There can be only one rest in any destructuring assignment.
Copier après la connexion

let diet = ['pizza', 'burger','noodles','roasted','sushi','dosa','uttapam'];

laisser [premier, troisième, ...autres] = régime ;
d'abord ;
troisième ;
d'autres ;

- Rest also works with objects. Only difference is that elements will be collected into a new object instead of an arrray.
Copier après la connexion

let jours = { 'mon':1,'mar':2,'mer:3,'jeu':4,'vendredi':5,'sat':6,'dim':7};
laissez {sam, sun, ...working} = jours ;
lâcher = {sam, sun};

travailler ; // { lundi : 1, mar : 2, mer : 3, jeu : 4, ven : 5 >
désactivé; // { sam : 6, dim : 7 }

- Although both look same, but they work differently based on where they are used.

Copier après la connexion

Distinction subtile n/b Repos & Spread :

  • L'opérateur Spread est utilisé là où nous écrivions des valeurs séparées par des virgules
  • Le modèle de repos est utilisé, nous écririons les noms de variables séparés par des virgules.

Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal