2016-06-15 3 views
0

큰 JavaScript 프로젝트의 일부로 여러 고정 폭 텍스트 파일을 처리하고 각 파일 행에서 하위 문자열을 추출하고 그 텍스트가 이미 추출되어 있지 않은 한, 배열에 텍스트. 이것은 내가 답을 찾을 수 없었던 이상한 문제를 제시합니다.임시 변수를 사용하지 않고 평가 된 표현식 재사용

추출 된 표현식이 배열의 일부인 경우 substring(), test를 사용하여 문자열을 추출한 다음 평가 된 표현식을 배열에 추가해야합니다. 이 코드를 작성할 수있는 방법은 두 가지가 있습니다. 제 이렇게 회 문자열을 평가하는 것이다

var nextLine = 'Really long string that I only need part of: ID123456'; 
var tempStr = nextLine.substring (45); 
var idArray = []; 

if (idArray.indexOf (tempStr) === -1) { 
    idArray.push (tempStr); 
} 

제 니펫 포함 nextLine.substring 평가 : 두 번째 식의 결과를 저장하는 임시 변수를 사용하는

var nextLine = 'Really long string that I only need part of: ID123456'; 
var idArray = []; 

if (idArray.indexOf (nextLine.substring (45)) === -1) { 
    idArray.push (nextLine.substring (45)); 
} 

(45)를 두 번 사용하는 반면 두 번째는 두 번만 사용되는 임시 변수를 사용합니다. 이들 중 어느 것도 나에게 정말 호소하지 않지만, 나는 이것에 대해 다른 방법을 찾을 수 없었습니다.

이 표현식을 테스트하고 그것을 두 번 평가하지 않고 임시 변수를 사용하지 않고 푸시 할 수있는 트릭이 있습니까?

+0

_ "두 번만 사용됨"_ - 여러 번 사용하는 이유 (다시 사용해야하는 약간의 정보 보유)가 어필 할 이유가 있습니까? –

+0

모범 사례와 깨끗한 코딩에 관심을 기울여 사용되지 않는 변수를 남겨 두지 않는 방법이 있는지 알고 싶습니다. 이 특정 코드는 잠재적으로 하루에 수천 번 실행되므로 코드를 작성할 수있는 최선의 방법을 찾지 못한다고 생각하지 않습니다. 게다가, 더 좋은 방법이 있다면, 나는 그것이 무엇인지 알고 싶습니다. – xarxziux

+0

'-1'의 오른쪽에있는')'는'==='의 왼쪽에 있어야합니다. 최고 코드. –

답변

0

변수가 실제로 너를 괴롭 히면 친절하게 다시 배열하고 범위 안에 넣는다.

var nextLine = 'Really long string that I only need part of: ID123456'; 
var idArray = []; { 
    var tempStr = nextLine.substring(45); 
    if (idArray.indexOf(tempStr) === -1) { 
     idArray.push(tempStr); 
    } 
} 

솔직히 작은 물건에 시간을 낭비하지 마십시오.

+0

답장을 보내 주셔서 감사합니다. 제가 수행하고있는 프로젝트는 저에게 큰 도약입니다. 그래서 제가 제대로하고 있다고 확신하고 싶었습니다. 이 특정 스 니펫을 코딩하는 더 좋은 방법이 있어야하는 것처럼 보였습니다. 그러나 실제 대답은 no입니다. 임시 변수는 다음입니다! – xarxziux

관련 문제