recherche
Maisoninterface Webtutoriel CSSTous les nouveaux conseils et astuces ES2019

Tous les nouveaux conseils et astuces ES2019

ES2019 apporte plusieurs nouvelles fonctionnalités à la norme ECMAScript. Ces fonctionnalités sont officiellement disponibles dans Node.js, Chrome, Firefox et Safari. Pour prendre en charge les navigateurs plus âgés, vous pouvez également utiliser Babel pour compiler ces fonctionnalités en différentes versions de JavaScript.

Voyons quelles nouvelles fonctionnalités sont disponibles!

Méthode Object.fromEntries .

ES2017 introduit la méthode Object.entries , qui convertit les objets en leurs représentations de tableau. Par exemple:

 Laissez les étudiants = {
  Amelia: 20,
  Béatrice: 22,
  Cece: 20,
  Deirdre: 19,
  Eloise: 21
}

Objet.ntries (étudiants) 
// [
// ['Amelia', 20],
// ['beatrice', 22],
// ['cece', 20],
// ['Deirdre', 19],
// ['Eloise', 21]
//]

Ceci est très utile car il permet aux objets d'utiliser un certain nombre de fonctions intégrées dans des prototypes de tableau tels que map , filter , reduce , etc. Cependant, la conversion du résultat à l'objet nécessite un processus relativement fastidieux.

 Laissez les étudiants = {
  Amelia: 20,
  Béatrice: 22,
  Cece: 20,
  Deirdre: 19,
  Eloise: 21
}

// Convertir en un tableau pour utiliser la fonction .Filter () Laissez dépassement ouverte = objet.Entries (étudiants) .filter (([nom, âge]) => {
  âge de retour> = 21
}) // [['Beatrice', 22], ['Eloise', 21]]

// convertit le tableau multidimensionnel à l'objet LETSINGAGEAUDENTS = {}
pour (que [nom, âge] de dépassement {) {
    DrinkingAgestDants [nom] = âge;
}
// {Beatrice: 22, Eloise: 21}

Object.fromEntries est conçue pour éliminer cette boucle! Il fournit un code plus propre pour vous faciliter d'utiliser des méthodes de prototype de tableau sur les objets.

 Laissez les étudiants = {
  Amelia: 20,
  Béatrice: 22,
  Cece: 20,
  Deirdre: 19,
  Eloise: 21
}

// Convertir en un tableau pour utiliser la fonction .Filter () Laissez dépassement ouverte = objet.Entries (étudiants) .filter (([nom, âge]) => {
  âge de retour> = 21
}) // [['Beatrice', 22], ['Eloise', 21]]

// convertit le tableau multidimensionnel à l'objet LET LOINGAGEAGETENDENTS = objet.fromentries (dépassement sur le plan); 
// {Beatrice: 22, Eloise: 21}

Il convient de noter que les tableaux et les objets sont des structures de données différentes, et la conversion entre les deux peut entraîner une perte de données. L'exemple suivant montre comment un élément de tableau devient une clé d'objet en double:

 Laissez les étudiants = [
  ['Amelia', 22], 
  ['Béatrice', 22], 
  ['Eloise', 21], 
  ['Béatrice', 20]
]]

Soit StudentObj = object.fromentries (étudiants); 
// {Amelia: 22, Béatrice: 20, Eloise: 21}
// La première Béatrice a été jetée!

Soyez conscient des effets secondaires potentiels lorsque vous utilisez ces fonctions.

Object.fromEntries

Chrome Incendier Safari Bord
75 67 12.1 Non pris en charge

Méthode Array.prototype.flat

Les tableaux multidimensionnels sont une structure de données très courante, en particulier lors de la récupération des données. La capacité d'aplatir les tableaux multidimensionnels est nécessaire. Bien que cela ait pu être fait auparavant, la méthode n'est pas élégante.

Examinons un exemple où map renvoie un tableau multidimensionnel qui doit être aplati.

 Laissez les cours = [
  {
    Sujet: "mathématiques",
    Numéro de Students: 3,
    WaitlistSudents: 2,
    Étudiants: [«Janet», «Martha», «Bob», [«Phil», «Candace»]]
  },
  {
    Sujet: "Anglais",
    Numéro de Students: 2,
    Étudiants: [«Wilson», «Taylor»]
  },
  {
    Sujet: "Histoire",
    Numéro de students: 4,
    Étudiants: [«Edith», «Jacob», «Peter», «Betty»]
  }
]]

Laissez CoursesTedents = Courses.Map (Course => Course.Sudents)
// [
// ['Janet', 'Martha', 'Bob', ['Phil', 'Candace']],
// ['Wilson', 'Taylor'],
// ['Edith', 'Jacob', 'Peter', 'Betty']
//]

[] .Concat.Apply ([], Coursestudents) // Nous devons utiliser cette méthode

Array.prototype.flat a vu le jour. Il accepte un paramètre de profondeur facultatif.

 Laissez Coursestudents = [
  ['Janet', 'Martha', 'Bob', ['Phil', 'Candace']],
  ['Wilson', 'Taylor'],
  [«Edith», «Jacob», «Peter», «Betty»]
]]

Laissez FlattenOneLevel = CoursesTudents.flat (1)
Console.log (FlattenOnelevel)
// [
// "Janet",
// 'Martha',
// 'bob',
// ['Phil', 'Candace'],
// «Wilson»,
// 'Taylor',
// 'Edith',
// 'Jacob',
// 'Peter',
// "Betty"
//]

Soit flattentwolevels = Coursestudents.flat (2)
console.log (flattentwolevels)
// [
// «Janet», «Martha»,
// 'Bob', 'Phil',
// 'Candace', 'Wilson',
// 'Taylor', 'Edith',
// 'Jacob', 'Peter',
// "Betty"
//]

Notez que si aucun paramètre n'est spécifié, la profondeur par défaut est 1. Ceci est très important car dans notre exemple, cela n'aplatit pas complètement le tableau.

 Laissez Coursestudents = [
  ['Janet', 'Martha', 'Bob', ['Phil', 'Candace']],
  ['Wilson', 'Taylor'],
  [«Edith», «Jacob», «Peter», «Betty»]
]]

Laissez defaultflatTened = CoursesTudents.flat ()
console.log (defaultflated)
// [
// "Janet",
// 'Martha',
// 'bob',
// ['Phil', 'Candace'],
// «Wilson»,
// 'Taylor',
// 'Edith',
// 'Jacob',
// 'Peter',
// "Betty"
//]

La raison de cette conception est que la fonction n'est pas gourmand par défaut et nécessite des instructions explicites pour s'exécuter de cette manière. Infinity peut être utilisé comme paramètre pour les cas où la profondeur est inconnue et l'intention est d'aplatir complètement le tableau.

 Laissez Coursestudents = [
  ['Janet', 'Martha', 'Bob', ['Phil', 'Candace']],
  ['Wilson', 'Taylor'],
  [«Edith», «Jacob», «Peter», «Betty»]
]]

Soit toujours Flatned = Coursestudents.flat (Infinity)
Console.log (toujoursflated)
// [
// «Janet», «Martha»,
// 'Bob', 'Phil',
// 'Candace', 'Wilson',
// 'Taylor', 'Edith',
// 'Jacob', 'Peter',
// "Betty"
//]

Comme toujours, les opérations gourmands doivent être utilisées avec prudence, et si la profondeur du réseau est en effet inconnue, les opérations gourmands peuvent ne pas être un bon choix.

Array.prototype.flat Méthode Support Situation

Chrome Incendier Safari Bord
75 67 12 Non pris en charge
Chrome Android Firefox Android Safari iOS C'est-à-dire mobile Internet Samsung Android WebView
75 67 12.1 Non pris en charge Non pris en charge 67

Méthode Array.prototype.flatMap

Avec l'ajout de la méthode flat , nous obtenons également le tableau de fonction Array.prototype.flatMap . Nous avons en fait vu ce que cela fonctionne dans l'exemple ci-dessus, mais regardons un de plus.

Si nous voulions insérer des éléments dans un tableau, à quoi ressemblerait-il avant l'ES2019 ajouter ces fonctionnalités?

 Soit les notes = [78, 62, 80, 64]

Soit Curved = grade.map (grade => [grade, 7e année])
// [[78, 85], [62, 69], [80, 87], [64, 71]]

Laissez flatmapt = [] .concat.apply ([], incurvé) // désormais plat, plat peut être utilisé mais il n'existait pas avant // [[
// 78, 85, 62, 69,
// 80, 87, 64, 71
//]

Maintenant que nous avons Array.prototype.flat , nous pouvons améliorer un peu cet exemple.

 Soit les notes = [78, 62, 80, 64]

LET FLATMAPP = GRADES.MAP (Grade => [Grade, 7e année]). Flat ()
// [
// 78, 85, 62, 69,
// 80, 87, 64, 71
//]

Cependant, il s'agit toujours d'un modèle relativement populaire, en particulier dans la programmation fonctionnelle. C'est donc super de le faire intégrer dans un prototype de tableau. En utilisant flatMap , nous pouvons faire ceci:

 Soit les notes = [78, 62, 80, 64]

Laissez FlatMAPP = grades.flatMap (grade => [grade, 7e année]);
// [
// 78, 85, 62, 69,
// 80, 87, 64, 71
//]

N'oubliez pas que le paramètre par défaut pour Array.prototype.flat est 1. flatMap équivaut à combiner map et flat sans paramètres. Par conséquent, flatMap ne s'aplatira qu'une seule couche.

 Soit les notes = [78, 62, 80, 64]

Laissez FlatMapt = grades.flatmap (grade => [grade, [grade 7]]);
// [
// 78, [85],
// 62, [69],
// 80, [87],
// 64, [71]
//]

Array.prototype.flatMap Méthode Support Situation

Chrome Incendier Safari Bord
75 67 12 Non pris en charge
Chrome Android Firefox Android Safari iOS C'est-à-dire mobile Internet Samsung Android WebView
75 67 12.1 Non pris en charge Non pris en charge 67

String.trimStart et String.trimEnd Méthodes

Un autre bel ajout à ES2019 est l'alias, ce qui rend certains noms de fonction de chaîne plus explicites. Auparavant, String.trimRight et String.trimLeft étaient disponibles.

 Laissez Message = "Bienvenue sur CS 101"
message.trimright ()
// Bienvenue sur CS 101 '
message.trimleft ()
// Bienvenue sur CS 101 '
message.trimright (). trimbleft ()
// Bienvenue sur CS 101 '

Ce sont de grandes fonctions, mais il est également utile de leur donner davantage les noms qui conviennent davantage à leur objectif. Supprimez les espaces de début et de fin.

 Laissez Message = "Bienvenue sur CS 101"
message.triMend ()
// Bienvenue sur CS 101 '
message.trimStart ()
// Bienvenue sur CS 101 '
message.triMend (). trimStart ()
// Bienvenue sur CS 101 '

String.trimStart et String.trimEnd Méthodes Support Situation

Chrome Incendier Safari Bord
75 67 12 Non pris en charge

catch facultatif reliant

Une autre fonctionnalité agréable de l'ES2019 consiste à rendre les paramètres dans try-catch en option. Auparavant, tous les blocs catch ont passé des exceptions en tant que paramètres. Cela signifie que même si le code du bloc catch l'ignore, il existe toujours.

 essayer {
  LET PARSED = JSON.Parse (OBJ)
} catch (e) {
  // ignorer E, ou utiliser Console.log (OBJ)
}

Ce n'est plus le cas. Si aucune exception n'est utilisée dans catch , rien n'est nécessaire du tout.

 essayer {
  LET PARSED = JSON.Parse (OBJ)
} attraper {
  Console.log (OBJ)
}

C'est une bonne option si vous savez déjà quelle est l'erreur et que vous recherchez les données qui les déclenchent.

Prise en charge de la liaison de catch facultative

Chrome Incendier Safari Bord
75 67 12 Non pris en charge

Modifications de la méthode Function.toString()

ES2019 a également changé la façon dont Function.toString() s'exécute. Auparavant, il a complètement supprimé les espaces.

 Fonction Greeting () {
  const name = 'CSS Tricks'
  console.log (`Bonjour à partir de $ {nom}`)
}

salutation.tostring ()
// 'Fonction Greeting () {\ nconst name = \' css tricks \ '\ nconsole.log (`Bonjour de $ {name} //`) \ n}'

Maintenant, il reflète la véritable représentation de la fonction dans le code source.

 Fonction Greeting () {
  const name = 'CSS Tricks'
  console.log (`Bonjour à partir de $ {nom}`)
}

salutation.tostring ()
// 'Fonction salutation () {\ n'  
// "const name = 'CSS Tricks' \ n"  
// 'console.log (`bonjour de $ {name}`) \ n'  
// '}'

Il s'agit principalement d'un changement interne, mais je ne peux pas m'empêcher de penser que cela peut faciliter la vie d'un blogueur ou deux à l'avenir.

Prise en charge de la méthode Function.toString()

Chrome Incendier Safari Bord
75 60 12 - Support partiel 17 - Support partiel

Ceci est la nouvelle fonctionnalité d'ES2019!

Vous pouvez également explorer d'autres nouvelles fonctionnalités, notamment:

  • Description du symbole
  • Tri de la stabilité
  • Ecmascript en tant que superset de JSON
  • JSON.stringify

Ayez une programmation JavaScript heureuse!

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!

Déclaration
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
Style CSS de niveau supérieur pour les curseursStyle CSS de niveau supérieur pour les curseursApr 23, 2025 am 11:04 AM

Les curseurs personnalisés avec CSS sont excellents, mais nous pouvons faire passer les choses au niveau supérieur avec JavaScript. À l'aide de JavaScript, nous pouvons passer entre les états du curseur, placer du texte dynamique dans le curseur, appliquer des animations complexes et appliquer des filtres.

Worlds Collide: Détection de collision de l'ordre clé à l'aide de requêtes de styleWorlds Collide: Détection de collision de l'ordre clé à l'aide de requêtes de styleApr 23, 2025 am 10:42 AM

Les animations CSS interactives avec des éléments se ricochent semblent plus plausibles en 2025. Bien qu'il soit inutile de mettre en œuvre Pong dans CSS, la flexibilité et la puissance croissantes de CSS renforcent le soupçon de Lee selon lequel un jour, ce sera un jour

Utilisation du filtre de fond CSS pour les effets d'interface utilisateurUtilisation du filtre de fond CSS pour les effets d'interface utilisateurApr 23, 2025 am 10:20 AM

Conseils et astuces sur l'utilisation de la propriété CSS Back-Filter pour styliser les interfaces utilisateur. Vous apprendrez à superposer des filtres en toile de fond entre plusieurs éléments et à les intégrer à d'autres effets graphiques CSS pour créer des conceptions élaborées.

Smil sur?Smil sur?Apr 23, 2025 am 09:57 AM

Eh bien, il s'avère que les fonctionnalités d'animation intégrées de SVG n'ont jamais été obsolètes comme prévu. Bien sûr, CSS et JavaScript sont plus que capables de porter la charge, mais il est bon de savoir que Smil n'est pas mort dans l'eau comme précédemment

'Pretty' est dans l'œil du spectateur'Pretty' est dans l'œil du spectateurApr 23, 2025 am 09:40 AM

Yay, laissez-le saut pour le wat-wrap: joli atterrissage dans la technologie safari aperçu! Mais méfiez-vous qu'il est différent de la façon dont il fonctionne dans les navigateurs de chrome.

CSS-Tricks raconte xliiiCSS-Tricks raconte xliiiApr 23, 2025 am 09:35 AM

Cette mise à jour de CSS-Tricks met en évidence des progrès significatifs dans l'Almanac, des apparitions de podcast récentes, un nouveau guide CSS Counter et l'ajout de plusieurs nouveaux auteurs contribuant un contenu précieux.

La fonctionnalité @Apply de Tailwind est meilleure qu'il n'y paraîtLa fonctionnalité @Apply de Tailwind est meilleure qu'il n'y paraîtApr 23, 2025 am 09:23 AM

La plupart du temps, les gens présentent la fonctionnalité de Tailwind avec l'un des utilitaires à propriété unique de Tailwind (qui modifie une seule déclaration CSS). Lorsqu'il est présenté de cette façon, @Apply ne semble pas du tout prometteur. So évidence

Se sentir comme je n'ai pas de libération: un voyage vers les déploiements sainsSe sentir comme je n'ai pas de libération: un voyage vers les déploiements sainsApr 23, 2025 am 09:19 AM

Le déploiement comme un idiot se résume à un décalage entre les outils que vous utilisez pour déployer et la récompense en complexité réduite par rapport à la complexité ajoutée.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)