La fonction de réduction est une méthode de tableau qui apparaît dans la spécification ECMAScript5. Permettez-moi de partager avec vous à travers cet article JavascriptLa routine d'entretien classique vérifie la fonction de réduction, les amis qui en ont besoin peuvent s'y référer
Aujourd'hui, je suis tombé par hasard sur un morceau de code. Le code utilisait une longueur très courte pour répondre à la question d'entretien classique consistant à compter le nombre de caractères identiques dans une chaîne. La méthode de réduction a été utilisée. Je n'ai rien trouvé de précieux, ce qui a entraîné du gaspillage. Il m'a fallu un certain temps pour comprendre, et maintenant j'organise mes idées comme suit :
Code original :
var arr="qweqrq" var info= arr.split('').reduce((a,b)=> (a[b]++ || (a[b]=1),a) ,{}) console.log(info)
L'idée du code est la suivante, coupez d'abord la chaîne arr dans un tableau, puis utilisez réduire. Que fait cette méthode ? Elle est divisée en ces étapes :
1. Tout d'abord, réduire recevra un rappel pour exécuter chaque élément du tableau. il y a un deuxième paramètre comme dans l'exemple ci-dessus :{}. , alors le rappel utilisera ce {} comme paramètre pour le transmettre au rappel avec le premier élément du tableau
2 Une fois les paramètres transmis, une opération de court-circuit de porte ET sera effectuée. être effectuée, qui peut également être appelée opération de valeur par défaut, lorsque a[b]++ devient vrai, renvoyez a[b]. Ici, a est {} et b est "q". Évidemment, il n'y a pas de b dans a. Si a[b]=1 est exécuté, a[b] se verra attribuer une valeur de 1, suivie d'une expression virgule . Formule , donc il renverra un objet avec a[b]:1 tel que attribut
ET opération de court-circuit de porte : si le premier opération Si la valeur du nombre est vraie, une opération de court-circuit est effectuée et la valeur du premier opérande est directement générée. Si faux, renvoie la valeur du deuxième opérande.
Expression par virgule : La forme générale de l'expression par virgule est : expression 1, expression 2, expression 3... expression n. Le processus de résolution de l'expression virgule est le suivant : calculez d'abord la valeur de l'expression 1, puis calculez la valeur de l'expression 2,... jusqu'à ce que la valeur de l'expression n soit calculée. Enfin, la valeur de l’expression virgule entière est la valeur de l’expression n.
3. Parlons de la fonction de réduction plus tard. Elle peut utiliser le résultat renvoyé après l'exécution précédente comme paramètre et continuer à le transmettre dans le rappel pour exécution avec les éléments suivants, ce qui équivaut à fn. (fn(fn(fn(a, b), c), d), e), fn est le rappel
4. Dans cet exemple, parce que le deuxième paramètre {} est transmis, le rappel ; est exécuté 6 fois. Cela équivaut à saisir et vérifier les doublons pour chaque élément du tableau. Par exemple, lorsque le rappel est exécuté pour la quatrième fois, a vaut {q:1,w:1,e:1} et le rappel est exécuté, a[ b] Autrement dit, a['q'] existe. Si a['q']++ est exécuté, la valeur de a['q'] est 2, et ainsi de suite. avec chaque élément du tableau, qui apparaît. Un objet dont les heures sont des valeurs d'attribut.
Il convient de noter que réduire est une méthode introduite dans es5 et n'est pas compatible avec ie8 et versions antérieures.
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!