はじめに
インタビュー中に問題に遭遇しました: JS 配列の sum 関数です。最初に思い浮かぶのは配列のループです。しかし、面接官がこの質問をするとき、彼はこのよく知られた方法を試しようとしているのではないと感じます。当時、私は配列の項目を継続的に追加する再帰関数を考え出すほど賢明でしたが、長い間苦労し、それが最適な解決策ではないことがわかりました。最後に、インタビュアーは私に、reduce() を見たことがあるかと尋ねましたが、実際には見ませんでした。そこで、情報を確認するために戻ってきました。Array.reduce() は ES5 によって追加された新しい属性であり、Array.reduceRight() も同様です。
以下は配列の合計方法の概要です。
最も粗雑な方法: 取得するループ
for ループを通じて項目ごとに合計を追加します。コードを見てください:
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(); // 24
reduce メソッドの使用
reduce メソッドを使用すると、配列の合計を行う sum メソッドを作成できます。
reduce() メソッドは関数をアキュムレータとして受け取り、配列内の各値 (左から右) が減算され、最終的に値になります。
Reduce 構文:
array.reduce(callback[, initialValue]);
コールバック関数は、previousValue (最後のコールバック呼び出しによって返された値)、currentValue (現在処理中の要素)、index (インデックス)、および配列自体 (最初の呼び出し) の 4 つのパラメーターを受け入れます。 ) コールバックの最初のパラメータ)、配列内の各値に対して関数を実行します。
initialValue パラメータはオプションであり、初期値を表します。initialValue パラメータが指定されている場合、それは最初に使用された以前の値とみなされ、デフォルトの場合は、配列の最初の要素が以前の初期値として使用されます。 , そして現在は一桁後の順位になります。
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配列sum関数と配列内の最大値を見つける
サンプルコード
<!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>php中文网_js数组求和和最大值方法_php中文网</title> <meta name="keywords" content="站长,网页特效,网页特效代码,js特效,js脚本,脚本,广告代码,php.cn,www.php.cn,php中文网" /> <meta name="description" content="www.php.cn,php中文网,站长必备js特效及广告代码。大量高质量js特效,提供高质量广告代码下载,尽在php中文网" /> </head> <body> <a href="http://www.php.cn/">php中文网<</a>,站长必备的高质量网页特效和广告代码。jb51.net,站长js特效。<hr> <script type="text/javascript"> //求和 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; }; //应用 var arr = [1,21,3,4,22,45,60,7,32]; alert(arr.join("+") + "=" + arr.sum()); alert(arr.join("|") + "中, 最大的数是:" + arr.maxima()); </script> </body> </html>
上記がこの記事の全内容です。何か質問がある場合は、それが役立つことを願っています。 、ディスカッション用のメッセージを残してください。編集者が時間内に全員に返信します。
JS 配列の合計と最大化の方法を共有するその他の記事については、PHP 中国語 Web サイトに注目してください。