序文
インタビューで遭遇した問題:JSアレイ合計関数。私が考える最初のことは、配列ループです。しかし、インタビュアーは、よく知られている方法をとらないようにこの質問をしたと思います。当時、私は非常に賢いので、再帰関数が常にアレイにアイテムを追加していると考えましたが、長い時間を過ごすことはできませんでした。これは最適なソリューションではないことが判明しました。最後に、インタビュアーは私が前にreduce()見たことがあるかどうか私に尋ねましたが、それは本当にそうではありませんでした。したがって、情報を調べると、 Array.reduce() ES5に追加された新しい属性であり、同様の属性はArray.reduceRight()。
以下のアレイを合計する方法を要約しましょう。
最も粗い方法:ループの取得
forループを介して1つずつ追加します。コードを見てください:
array.prototype.sum = function(){var result = 0; for(var i = 0; i <this.length; i ++){result+= this [i]; } return result;}; [1,4,7,2,10] .sum(); // 24Reduceメソッドを使用します
reduceメソッドを使用して、配列を合計するためのsum方法を記述できます。
reduce()メソッドはアキュムレータとして関数を受け取り、配列内の各値(左から右)が縮小し始め、最終的に値になります。
減少の構文:
array.reduce(callback [、initialValue]);
callback関数は、4つのパラメーターを受け入れます: previousValue (最後のコールバックによって返される値)、 currentValue (現在の要素が処理されている)、 index (インデックス)、および配列自体( callbackの最初のパラメーターが初めて呼び出されます)、および配列の各値の関数を実行します。
initialValueパラメーターはオプションで、初期値を示します。 initialValueパラメーターが指定されている場合、それは最初に使用されたprevious値と見なされます。デフォルトの場合、配列の最初の要素はprevious初期値として使用され、 current背面に1つの場所です。
array.prototype.sum = function(){return this.reduce(function(partial、value){return partial + value;})}; [1,4,7,2,10] .sum(); // 24最初の方法と比較して、 reduce()メソッドを使用する方が効率的です。
これらの2つの方法の効率比較は、関数が実行される前後にnew Date()を直接呼び出して、リアルタイム時間を取得し、それによって実行時間を時差を通して比較することができます。すべての人の実行環境が大きく異なるため、ここでは比較しません。テスト結果は、 reduce()メソッドの実行時間が短いことです。
JS配列機能と配列の最大値を見つけます
例コード
< xmlns = "http://www.w3.org/1999/xhtml"> <head> <meta http-equiv = "content-type" content = "text/html; charse name = "keywords" content = "webmaster、webページの特殊効果コード、JS特殊効果、JSスクリプト、スクリプト、広告コード、vevb.com、vevb.com、wulin.com" /> <meta name = "description" content = "www.vevb.com、wulin.com、wulin.com、js effectis expectes。高品質の広告コードのダウンロードを提供するすべてのwulin.com "/> </head> <body> <a href =" // www.vevb.com/">wulin.com </a>、ウェブマスターは高品質のWebページの特殊効果と広告コードを持っている必要があります。 Vevb.com、Webmaster JS特殊効果。 <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;}; //最大値array.prototype.maxima = function(){for(var i = 0、maxvalue = number.min_value; i <this.length; i ++)parseint(this [i])> maxvalue &&(maxvalue = this [i]); return maxvalue;}; // apply var arr = [1,21,3,4,22,45,60,7,32]; alert(arr.join( " +") + "=" + arr.sum()); alert(arr.join( "|") + "、最大数は次のとおりです上記はこの記事のすべての内容です。 JavaScriptを皆の使用に役立つことを願っています。ご質問がある場合は、メッセージを残して話し合ってください。編集者は、すべての人に時間内に返信します。