このコードを最適化するにはどうすればよいですか?上司は、コードを ES6 マップ データ構造に変換する必要があると言いました。私の変換が間違っている可能性があり、遅くなっているようです。
これは私が行った最適化です。速度が遅くなっているようです。アドバイスをお願いします。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
使用filter() 确实可以一句话搞定,但是,效率不高。其实可以用 find (MDNを参照)
filter()
find
残念ながら、IE は find() をサポートしていないため、MDN ドキュメントの最後近くに Polyfill があります。
find()
マップを使用して実装する場合、ネイティブ オブジェクトは文字列型のキーをサポートしているため、ES6 マップを使用する必要はありませんが、実装方法に関係なく、このマップの変換には getServiceTypeName 之外进行。因为转换的过程比你写的 for ... of 時間がかかるはずです。
getServiceTypeName
for ... of
objToStrMap を初期化する必要があるのは 1 回だけです。ループ内で毎回初期化するため、時間がかかります。
追加手順
...
まず、キーと値のペア name:Id を含むマップ構造に変換します。次に、名前を直接使用して、対応する ID を取得できます。あなたは彼の言った方法の意味を全く理解していませんでした。
まず型配列をマップ構造に変換し、次に、map.get(code) を通じて取得します。横断する必要はありません。
関数ではこのように書くことができますlet result = serviceTypeList.map((val)=> val.typeId === code);retVal = result.name;
わずか半行のコード
ループ内のフィルタリングの動作は遅くありません。
どのソリューションを地図に変換するかは、変換自体のコストを考慮する必要があります
一部の言語に付属するマップ実装は、コレクションが小さい場合に配列を使用するため、ハッシュコード操作の必要性がなくなり、効率が向上します
使用
リーリーfilter()
确实可以一句话搞定,但是,效率不高。其实可以用find
(MDNを参照)残念ながら、IE は
find()
をサポートしていないため、MDN ドキュメントの最後近くに Polyfill があります。マップを使用して実装する場合、ネイティブ オブジェクトは文字列型のキーをサポートしているため、ES6 マップを使用する必要はありませんが、実装方法に関係なく、このマップの変換には
リーリーgetServiceTypeName
之外进行。因为转换的过程比你写的for ... of
時間がかかるはずです。objToStrMap を初期化する必要があるのは 1 回だけです。ループ内で毎回初期化するため、時間がかかります。
追加手順
リーリー...
まず、キーと値のペア name:Id を含むマップ構造に変換します。次に、名前を直接使用して、対応する ID を取得できます。あなたは彼の言った方法の意味を全く理解していませんでした。
まず型配列をマップ構造に変換し、次に、map.get(code) を通じて取得します。横断する必要はありません。
関数ではこのように書くことができます
let result = serviceTypeList.map((val)=> val.typeId === code);
retVal = result.name;
わずか半行のコード
リーリーループ内のフィルタリングの動作は遅くありません。
どのソリューションを地図に変換するかは、変換自体のコストを考慮する必要があります
一部の言語に付属するマップ実装は、コレクションが小さい場合に配列を使用するため、ハッシュコード操作の必要性がなくなり、効率が向上します