ホームページ > ウェブフロントエンド > jsチュートリアル > js で配列の最大値を見つけるには、賢いのか愚かなのか、どちらの方法を使用しますか?

js で配列の最大値を見つけるには、賢いのか愚かなのか、どちらの方法を使用しますか?

yulia
リリース: 2018-09-08 17:24:23
オリジナル
1825 人が閲覧しました

この記事を書いた理由

私は現在取り組んでいるプロジェクトでアルゴリズムをほとんど使用しないので、当然この点については少し不慣れです。最近のコーディングで配列から最大値を取得する必要に遭遇したのですが、その時に無意識に考えたのがjsのsort()関数でした。今思うと本当に「罪」でした。その時、私は心の中で少し誇らしく思いました。「ふーん、通常はソートアルゴリズムを使って解決する必要がある問題を、js の組み込みメソッドを使うことで解決できます。コードは短いので、コードを書く必要はありません」トラバースと比較は面倒ですが、可読性は良好です。」内なるドラマは重いですよね?へー、おい、俺はまだ若くて怠け者なんだ。 js の内生ソート関数でもソートが使用されます。詳細については、segmentfault での js 内生 sort() 関数の実装方法を参照してください。

奇妙なスキルやトリック
jsには多くの「奇妙なトリックやトリック」があり、私は時々これらの「奇妙なトリックやトリック」を意図的に使用することがよくあります(注、使用することに反対しているわけではありませんが、場合によっては必要ない場合もあります)それを使用する))。たとえば、配列内の最大値を見つけるために、js には配列内の最大値を見つけるためのネイティブなメソッドはありませんが、Math にはあります:

Math.max(22, 79, 33) // 79
ログイン後にコピー

配列を使用したい場合は、それを使用することもできます:

 var arr = [22, 79, 33];
 Math.max.apply(null, arr); // 79
ログイン後にコピー

または、apply メソッドを使用せずに、配列を配置します。それを文字列に変換し、eval() メソッドを使用して、「Math.max(num1, num2, num3)」に接続された JS コードを実行することもできます。

 var max = eval("Math.max(" + arr.join(',') + ")"); // 79
ログイン後にコピー

これを考えたことがない場合は、上で述べたものを使用できます。sort() 関数も可能です:

var arr = [22, 79, 33];
 var getMax = function(arr) {
   var copyArr = JSON.parse(JSON.stringify(arr));
 var len = copyArr.length;
     copyArr.sort();
    return copyArr[len - 1];
 };
 getMax(arr); // 79
ログイン後にコピー

愚かなメソッド
今見ると、JS のパワーに驚かれるはずですが、時々、その「素晴らしいトリック」に頼りすぎると、「自意識過剰」な「ビッグ」ステータスに陥ります。 結局のところ、JS の力は、あなた自身のコーディングレベルが強いという意味ではありません。基本に立ち返って、愚かな方法で頭脳の力を鍛えましょう:

 var arr = [22, 79, 33];
  var getMax = function(arr) {
     var len = arr.length,
         max = arr[0]; 
     while (len--) {
         if (max >= arr[len]) {
            continue;
         }
       max = arr[len];
    } 
    return max;
 };
 getMax(arr); // 79
ログイン後にコピー

以上がjs で配列の最大値を見つけるには、賢いのか愚かなのか、どちらの方法を使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート