Préface
Un problème rencontré dans l'interview: la fonction de somme du tableau JS. La première chose à laquelle je pense, ce sont les boucles de tableau. Cependant, je pense que l'intervieweur a demandé à cette question de ne pas prendre la méthode bien connue. À ce moment-là, j'étais si intelligent que je pensais à la fonction récursive en ajoutant constamment des éléments au tableau, mais je ne pouvais pas ajuster la méthode après une longue période. Il s'est avéré que ce n'était pas la solution optimale. Enfin, l'intervieweur m'a demandé si j'avais vu reduce() auparavant, mais ce n'était vraiment pas le cas. Ainsi, lorsque je recherche les informations, Array.reduce() est un nouvel attribut ajouté à ES5, et les similaires sont Array.reduceRight()。
Résumons la méthode de addition des tableaux ci-dessous.
La manière la plus rugueuse: acquisition de boucle
Ajoutez un par un via la boucle pour. Regardez le code:
Array.prototype.sum = function () {var result = 0; for (var i = 0; i <this.length; i ++) {result + = this [i]; } Retour Résultat;}; [1,4,7,2,10] .sum (); // 24Utiliser la méthode Réduire
En utilisant la méthode reduce , vous pouvez écrire une méthode sum pour additionner un tableau.
reduce() reçoit une fonction en tant qu'accumulateur, et chaque valeur dans le tableau (de gauche à droite) commence à rétrécir et finit par être une valeur.
Syntaxe de réduction:
array.reduce (rappel [, initialValue]);
La fonction callback accepte 4 paramètres: previousValue (la valeur renvoyée par le dernier rappel), currentValue (l'élément actuel en cours de traitement), index (index) et le tableau lui-même (le premier paramètre de callback est appelé pour la première fois) et exécute la fonction pour chaque valeur dans le tableau.
Le paramètre initialValue est facultatif, indiquant la valeur initiale; Si initialValue est spécifié, il est considéré comme la valeur previous utilisée à l'origine. Si par défaut, le premier élément du tableau est utilisé comme valeur initiale previous et current est un endroit à l'arrière.
Array.prototype.sum = function () {return this.reduce (function (partial, value) {return partial + value;})}; [1,4,7,2,10] .sum (); // 24 Par rapport à la première méthode, l'utilisation reduce() est plus efficace.
La comparaison d'efficacité de ces deux méthodes peut directement appeler new Date() avant et après l'exécution de la fonction pour obtenir le temps en temps réel, comparant ainsi le temps d'exécution par le biais du temps. Je ne le comparerai pas ici parce que l'environnement d'exécution de tout le monde varie considérablement. Le résultat du test est que le temps d'exécution de reduce() est plus court.
Fonction de somme du tableau JS et trouvez la valeur maximale dans le tableau
Exemple de code
<! Doctype html public "- // w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns = "http://www.w3.org/1999/xhtml"> <éad> <meta http-equiv = "contenu-type" contenu = "text / html; charset = gb2312" /><title>wulin.net_js Array Sumation Metways Method_wulin.net </ Title> Content = "webmaster, page Web Effets spéciaux, Code d'effets spéciaux de page Web, effets spéciaux JS, scripts JS, scripts, codes publicitaires, vevb.com, www.vevb.com, wulin.com" /> <meta name = "Description" Content = "www.vevb.com, wulin.com, webmasters webmasters doit avoir des effets spéciaux et des codes spéciaux élevés. Téléchargements de code, tous sur wulin.com "/> </ head> <body> <a href =" // www.vevb.com/">wulin.com </a>, les webmasters doivent avoir des effets spéciaux de page Web de haute qualité et des codes publicitaires. Vevb.com, webmaster js Effets spéciaux. <hr> <script type = "text / javascript"> // sum array.prototype.sum = function () {for (var sum = i = 0; i <this.length; i ++) sum + = parseInt (this [i]); return sum;}; // Recherche de valeur maximale array.prototype.Maxima = function () {for (var i = 0, maxValue = nombre.min_value; i <this.length; i ++) parseInt (this [i])> maxValue && (maxValue = this [i]); return maxValue;}; // appliquer var arr = [1,21,3,4,22,45,60,7,32]; alert (arr.join ("+") + "=" + arr.sum ()); alert (arr.join ("|") + ", le plus grand nombre est:" + arr.Maxima ()); </cript> </ body> </html>Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'utilisation de JavaScript par tous. Si vous avez des questions, veuillez laisser un message et en discuter. L'éditeur répondra à tout le monde à temps.