Maison > interface Web > js tutoriel > le corps du texte

20 conseils pour améliorer la vitesse et l'efficacité du développement JavaScript

青灯夜游
Libérer: 2021-06-28 10:00:29
avant
2476 Les gens l'ont consulté

L'amélioration de la vitesse et de l'efficacité du développement JavaScript est une place très importante dans le développement quotidien. Cet article vous présentera quelques méthodes et astuces pratiques et pratiques pour les tâches quotidiennes, réduira le nombre de lignes de code et améliorera l'efficacité du travail. temps de pêche.

20 conseils pour améliorer la vitesse et l'efficacité du développement JavaScript

Dans nos tâches quotidiennes, nous devons écrire des fonctions telles que le tri, la recherche, la recherche de valeurs uniques, la transmission de paramètres, l'échange de valeurs, etc., donc ici je partagerai mon travail Il existe plusieurs astuces et méthodes communes qui ont été rassemblées au fil des années pour permettre à chacun d'augmenter le temps passé à pêcher. [Recommandations associées : Tutoriel d'apprentissage javascript]

Ces méthodes vous aideront certainement :

  • Réduire les lignes de code
  • Concours de codage
  • Augmenter le temps de pêche

1 Déclarer et initialiser le tableau

Nous pouvons vous utiliser. Vous pouvez initialiser le tableau avec une taille spécifique, ou vous pouvez initialiser le contenu du tableau en spécifiant une valeur. Vous pouvez utiliser un ensemble de tableaux. En fait, vous pouvez également le faire avec un tableau à deux dimensions, comme indiqué ci-dessous : 🎜>

const array = Array(5).fill(''); 
// 输出
(5) ["", "", "", "", ""]

const matrix = Array(5).fill(0).map(() => Array(5).fill(0))
// 输出
(5) [Array(5), Array(5), Array(5), Array(5), Array(5)]
0: (5) [0, 0, 0, 0, 0]
1: (5) [0, 0, 0, 0, 0]
2: (5) [0, 0, 0, 0, 0]
3: (5) [0, 0, 0, 0, 0]
4: (5) [0, 0, 0, 0, 0]
length: 5
Copier après la connexion

2. Somme, valeurs minimales et maximales

Nous devrions utiliser la méthode

pour trouver rapidement des opérations mathématiques de base. reduce

const array  = [5,4,7,8,9,2];
Copier après la connexion

Somme

array.reduce((a,b) => a+b);
// 输出: 35
Copier après la connexion

Valeur maximale

array.reduce((a,b) => a>b?a:b);
// 输出: 9
Copier après la connexion

Valeur minimale

array.reduce((a,b) => a<b?a:b);
// 输出: 2
Copier après la connexion

3. Trier des tableaux de chaînes, de nombres ou d'objets

Nous avons des méthodes intégrées

et sort() pour trier les chaînes, mais si c'est le cas un tableau de nombres ou d'objets ? reverse()

Tri de tableau de chaînes

const stringArr = ["Joe", "Kapil", "Steve", "Musk"]
stringArr.sort();
// 输出
(4) ["Joe", "Kapil", "Musk", "Steve"]

stringArr.reverse();
// 输出
(4) ["Steve", "Musk", "Kapil", "Joe"]
Copier après la connexion

Tri de tableau de nombres

const array  = [40, 100, 1, 5, 25, 10];
array.sort((a,b) => a-b);
// 输出
(6) [1, 5, 10, 25, 40, 100]

array.sort((a,b) => b-a);
// 输出
(6) [100, 40, 25, 10, 5, 1]
Copier après la connexion

Tableau d'objets Triez

const objectArr = [ 
    { first_name: &#39;Lazslo&#39;, last_name: &#39;Jamf&#39;     },
    { first_name: &#39;Pig&#39;,    last_name: &#39;Bodine&#39;   },
    { first_name: &#39;Pirate&#39;, last_name: &#39;Prentice&#39; }
];
objectArr.sort((a, b) => a.last_name.localeCompare(b.last_name));
// 输出 
(3) [{…}, {…}, {…}]
0: {first_name: "Pig", last_name: "Bodine"}
1: {first_name: "Lazslo", last_name: "Jamf"}
2: {first_name: "Pirate", last_name: "Prentice"}
length: 3
Copier après la connexion

4. Filtrez les valeurs virtuelles du tableau

comme

, 0, undefined , null, false, "" ces fausses valeurs peuvent être facilement filtrées par les techniques suivantes. &#39;&#39;

const array = [3, 0, 6, 7, &#39;&#39;, false];
array.filter(Boolean);


// 输出
(3) [3, 6, 7]
Copier après la connexion

5. Utilisez des opérateurs logiques pour gérer les situations qui nécessitent un jugement conditionnel

function doSomething(arg1){ 
    arg1 = arg1 || 10; 
// 如果arg1没有值,则取默认值 10
}

let foo = 10;  
foo === 10 && doSomething(); 
// 如果 foo 等于 10,刚执行 doSomething();
// 输出: 10

foo === 5 || doSomething();
// is the same thing as if (foo != 5) then doSomething();
// Output: 10
Copier après la connexion

6. 🎜>

const array  = [5,4,7,8,9,2,7,5];
array.filter((item,idx,arr) => arr.indexOf(item) === idx);
// or
const nonUnique = [...new Set(array)];
// Output: [5, 4, 7, 8, 9, 2]
Copier après la connexion

7. Créer un objet compteur ou une carteDans la plupart des cas, vous pouvez créer un objet compteur ou une carte. Compter la fréquence de certains mots spéciaux.

let string = &#39;kapilalipak&#39;;

const table={}; 
for(let char of string) {
  table[char]=table[char]+1 || 1;
}
// 输出
{k: 2, a: 3, p: 2, i: 2, l: 2}
Copier après la connexion

ou

const countMap = new Map();
  for (let i = 0; i < string.length; i++) {
    if (countMap.has(string[i])) {
      countMap.set(string[i], countMap.get(string[i]) + 1);
    } else {
      countMap.set(string[i], 1);
    }
  }
// 输出
Map(5) {"k" => 2, "a" => 3, "p" => 2, "i" => 2, "l" => 2}
Copier après la connexion

8 L'opérateur ternaire est cool

function Fever(temp) {
    return temp > 97 ? &#39;Visit Doctor!&#39;
      : temp < 97 ? &#39;Go Out and Play!!&#39;
      : temp === 97 ? &#39;Take Some Rest!&#39;: &#39;Go Out and Play!&#39;;;
}

// 输出
Fever(97): "Take Some Rest!" 
Fever(100): "Visit Doctor!"
Copier après la connexion

Comparaison. des méthodes de boucle

    et
  • obtiennent l'index par défaut, mais vous pouvez utiliser for. for..inarr[index]
  • accepte également les non-numéros, évitez donc de les utiliser.
  • for..in
  • ,
  • récupère directement l'élément. forEachfor...offorEach peut également obtenir l'index, mais
  • ne le peut pas.
  • for...of

10. Fusionner deux objets

const user = { 
 name: &#39;Kapil Raghuwanshi&#39;, 
 gender: &#39;Male&#39; 
 };
const college = { 
 primary: &#39;Mani Primary School&#39;, 
 secondary: &#39;Lass Secondary School&#39; 
 };
const skills = { 
 programming: &#39;Extreme&#39;, 
 swimming: &#39;Average&#39;, 
 sleeping: &#39;Pro&#39; 
 };

const summary = {...user, ...college, ...skills};

// 合并多个对象
gender: "Male"
name: "Kapil Raghuwanshi"
primary: "Mani Primary School"
programming: "Extreme"
secondary: "Lass Secondary School"
sleeping: "Pro"
swimming: "Average"
Copier après la connexion

11. Fonction flèche Les expressions de fonctions fléchées sont une alternative aux expressions de fonctions traditionnelles, mais sont restreintes et ne peuvent pas être utilisées dans toutes les situations. Parce qu'ils ont une portée lexicale (portée parent) et n'ont pas

et

qui leur sont propres, ils font référence à l'environnement dans lequel ils sont définis. this

const person = {
name: &#39;Kapil&#39;,
sayName() {
    return this.name;
    }
}
person.sayName();
// 输出
"Kapil"
Copier après la connexion
argumentMais ça :

const person = {
name: &#39;Kapil&#39;,
sayName : () => {
    return this.name;
    }
}
person.sayName();
// Output
"
Copier après la connexion

12. Chaîne facultative

const user = {
  employee: {
    name: "Kapil"
  }
};
user.employee?.name;
// Output: "Kapil"
user.employ?.name;
// Output: undefined
user.employ.name
// 输出: VM21616:1 Uncaught TypeError: Cannot read property &#39;name&#39; of undefined
Copier après la connexion

13. tableau en utilisant la méthode

intégrée.

const list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
list.sort(() => {
    return Math.random() - 0.5;
});
// 输出
(9) [2, 5, 1, 6, 9, 8, 4, 3, 7]
// 输出
(9) [4, 1, 7, 5, 3, 8, 2, 9, 6]
Copier après la connexion
Math.random()

14. Syntaxe du double point d'interrogation

const foo = null ?? &#39;my school&#39;;
// 输出: "my school"

const baz = 0 ?? 42;
// 输出: 0
Copier après la connexion

15.

function myFun(a,  b, ...manyMoreArgs) {
   return arguments.length;
}
myFun("one", "two", "three", "four", "five", "six");

// 输出: 6
Copier après la connexion
et
const parts = [&#39;shoulders&#39;, &#39;knees&#39;]; 
const lyrics = [&#39;head&#39;, ...parts, &#39;and&#39;, &#39;toes&#39;]; 

lyrics;
// 输出: 
(5) ["head", "shoulders", "knees", "and", "toes"]
Copier après la connexion

16 Paramètres par défaut

const search = (arr, low=0,high=arr.length-1) => {
    return high;
}
search([1,2,3,4,5]);

// 输出: 4
Copier après la connexion
17. Ou hexadécimal

const num = 10;

num.toString(2);
// 输出: "1010"
num.toString(16);
// 输出: "a"
num.toString(8);
// 输出: "12"
Copier après la connexion
18. Utiliser la déstructuration pour échanger deux nombres

let a = 5;
let b = 8;
[a,b] = [b,a]

[a,b]
// 输出
(2) [8, 5]
Copier après la connexion
19. Vérification du numéro de palindrome sur une seule ligne

function checkPalindrome(str) {
  return str == str.split(&#39;&#39;).reverse().join(&#39;&#39;);
}
checkPalindrome(&#39;naman&#39;);
// 输出: true
Copier après la connexion
20 Convertir les propriétés d'objet en tableaux de propriétés

const obj = { a: 1, b: 2, c: 3 };

Object.entries(obj);
// Output
(3) [Array(2), Array(2), Array(2)]
0: (2) ["a", 1]
1: (2) ["b", 2]
2: (2) ["c", 3]
length: 3

Object.keys(obj);
(3) ["a", "b", "c"]

Object.values(obj);
(3) [1, 2, 3]
Copier après la connexion
Pour plus de programmation- connaissances connexes, veuillez visiter : Introduction à la programmation ! !

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!

Étiquettes associées:
source:segmentfault.com
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!