이 코드를 어떻게 최적화해야 하나요? 사장님께서 ES6 맵 데이터 구조로 변환해야 한다고 하더군요. 변환이 잘못되어 느려지는 것 같아요
최적화를 했는데 속도가 느린 것 같습니다. 조언 부탁드립니다
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
사용filter() 确实可以一句话搞定,但是,效率不高。其实可以用 find(MDN 참조)
filter()
find
안타깝게도 IE는 find()을 지원하지 않으므로 MDN 문서 끝부분에 Polyfill이 있습니다.
find()
맵을 사용하여 구현하는 경우 네이티브 객체가 문자열 유형 키를 지원하므로 ES6 맵을 사용할 필요는 없지만 어떻게 구현하든 이 맵을 변환하는 데 getServiceTypeName 之外进行。因为转换的过程比你写的 for ... of시간이 더 많이 걸립니다.
getServiceTypeName
for ... of
objToStrMap은 한 번만 초기화하면 됩니다. 루프에서 매번 초기화하므로 속도가 느려집니다.
추가 지침
...
먼저 키-값 쌍 이름:ID를 사용하여 맵 구조로 변환합니다. 그런 다음 name을 직접 사용하여 해당 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은 한 번만 초기화하면 됩니다. 루프에서 매번 초기화하므로 속도가 느려집니다.
추가 지침
으아악...
먼저 키-값 쌍 이름:ID를 사용하여 맵 구조로 변환합니다. 그런 다음 name을 직접 사용하여 해당 ID를 얻을 수 있습니다. 당신은 그가 말한 방법의 의미를 전혀 이해하지 못했습니다.
먼저 유형 배열을 맵 구조로 변환한 다음 map.get(code)을 통해 가져옵니다. 횡단할 필요가 없습니다.
함수에서는 다음과 같이 작성할 수 있습니다.
let result = serviceTypeList.map((val)=> val.typeId === code);
retVal = result.name;
코드 반 줄
으아악루프 필터링 작업은 느리지 않습니다.
지도로 변환할 때 변환 자체의 비용을 고려해야 하는 솔루션
일부 언어와 함께 제공되는 지도 구현은 컬렉션이 작을 때 배열을 사용하여 해시코드 작업이 필요 없고 효율성이 향상됩니다