JavaScript - パフォーマンスの最適化の問題
高洛峰
高洛峰 2017-07-05 10:54:21
0
6
1038


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


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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(6)
習慣沉默

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

リーリー

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

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

リーリー
いいねを押す +0
代言

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

追加手順

リーリー
いいねを押す +0
为情所困

...

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

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

いいねを押す +0
阿神

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

いいねを押す +0
仅有的幸福

わずか半行のコード

リーリー
いいねを押す +0
女神的闺蜜爱上我

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

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート