문제

내 페이지 에이 배열이 있습니다. 프로토 타입은 많은 처리 시간을 빨아들이는 것 같습니다.

        Array.prototype.findInArray = function(searchStr) {
          var returnArray = false;
          for (i=0; i<this.length; i++) {
            if (typeof(searchStr) == 'function') {
              if (searchStr.test(this[i])) {
                if (!returnArray) { returnArray = [] }
                returnArray.push(i);
              }
            } else {
              var regexp = new RegExp(".*" + searchStr + ".*");
              if (this[i].match(regexp)) {
                if (!returnArray) { returnArray = [] }
                returnArray.push(i);
              }
            }
          }
          return returnArray;
        }
도움이 되었습니까?

해결책

우선, 당신은 양쪽에 ".*"를 가질 필요가 없다는 것을 알고 있습니까? 이미 기본적으로 정규 표현식은 문자열 내부의 어느 곳에서나 일치합니다. 둘째, 일정한 문자열을 검색하고 있고 정규 표현식이 제공하는 고급 물건을 사용할 필요가 없다면 사용하는 것이 더 빠릅니다. .indexOf(). 또한 특별한 의미를 가진 캐릭터를 탈출하는 것에 대해 걱정할 필요가 없습니다.

다른 팁

정규 표현은 크게 다를 수 있습니다. 간단하고 잘 만들어진 정규 표현식이 indexof ()보다 빠르거나 빠르게 작동 할 수 있다고 생각합니다. 반면에 복잡한 정규 표현은 더 많은 작업을 수행하기 때문에 더 많은 시간이 필요합니다.

또한 브라우저 구현 문제 Clouding 문제가 있습니다. 각 브라우저가 특정 요구 사항으로 각 유형의 탐지를 수행하는 데 걸리는 시간을 측정하기 위해 시간이 지정된 루프를 작성하지 않으면 실제로 확실한 답변을 얻을 수는 없습니다.

더 나쁜 것은 루프 외부에서 루프를 한 번 정의하거나 인수로 전달하는 모든 반복에 대한 새로운 정규 표현 객체를 만드는 것입니다.

또한이 용도로 테스트 더 좋고 빠릅니다 성냥.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top