ホームページ  >  に質問  >  本文

JavaScript - パフォーマンスの最適化の問題


このコードを最適化するにはどうすればよいですか?上司は、コードを ES6 マップ データ構造に変換する必要があると言いました。私の変換が間違っている可能性があり、遅くなっているようです。


これは私が行った最適化です。速度が遅くなっているようです。アドバイスをお願いします。

高洛峰高洛峰2663日前965

全員に返信(6)返信します

  • 習慣沉默

    習慣沉默2017-07-05 10:56:21

    使用filter() 确实可以一句话搞定,但是,效率不高。其实可以用 find (MDNを参照)

    リーリー

    残念ながら、IE は find() をサポートしていないため、MDN ドキュメントの最後近くに Polyfill があります。

    マップを使用して実装する場合、ネイティブ オブジェクトは文字列型のキーをサポートしているため、ES6 マップを使用する必要はありませんが、実装方法に関係なく、このマップの変換には getServiceTypeName 之外进行。因为转换的过程比你写的 for ... of 時間がかかるはずです。

    リーリー

    返事
    0
  • 代言

    代言2017-07-05 10:56:21

    objToStrMap を初期化する必要があるのは 1 回だけです。ループ内で毎回初期化するため、時間がかかります。

    追加手順

    リーリー

    返事
    0
  • 为情所困

    为情所困2017-07-05 10:56:21

    ...

    まず、キーと値のペア name:Id を含むマップ構造に変換します。次に、名前を直接使用して、対応する ID を取得できます。あなたは彼の言った方法の意味を全く理解していませんでした。

    まず型配列をマップ構造に変換し、次に、map.get(code) を通じて取得します。横断する必要はありません。

    返事
    0
  • 阿神

    阿神2017-07-05 10:56:21

    関数ではこのように書くことができます
    let result = serviceTypeList.map((val)=> val.typeId === code);
    retVal = result.name;

    返事
    0
  • 仅有的幸福

    仅有的幸福2017-07-05 10:56:21

    わずか半行のコード

    リーリー

    返事
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 10:56:21

    ループ内のフィルタリングの動作は遅くありません。

    どのソリューションを地図に変換するかは、変換自体のコストを考慮する必要があります

    一部の言語に付属するマップ実装は、コレクションが小さい場合に配列を使用するため、ハッシュコード操作の必要性がなくなり、効率が向上します

    返事
    0
  • キャンセル返事