2012-03-09 1 views
7

JSlint는 Array 생성자의 사용을 좋아하지 않으며이를 허용하는 JSLint 옵션이 없습니다. 따라서 길이 n의 배열을 만들려면 다음을 허용하지 마십시오.JSLint를 행복하게 만드는 동안 n 크기의 배열 만들기?

var arr = new Array(n); 

이 문제를 해결할 수있는 유일한 방법은 다음과 같습니다. 정상적인 상황에서

var arr = []; 
arr.length = 5; 

이 (하나가 아닌 두 줄의 코드를 사용하여) 큰 문제가 아니지만, 나는 간결한 문자열 승수 해킹 사용할 수없는 후회 :

function repeat(str, times) { 
    return new Array(times + 1).join(str); 
} 
+0

가능한 중복 (HTTP : // 유래. com/questions/4852017/proper-way-to-initialize-an-arrays-length-in-javascript) –

+1

왜 n 크기의 배열을 만들어야합니까? 문자열 곱셈기 함수가 "해킹"을 사용한다고 설명했는데 jslint가'new Array()'에 대해 말하는 것에 신경을 써서 놀랐지 만 for 루프로'repeat()'함수를 쉽게 구현할 수 있습니다 이것이'new Array()'가 필요한 유일한 이유라면'.length ='일을 사용하십시오. – nnnnnn

+0

* "사용하지 못함을 후회 ..."* JSLint를 사용해야하는 제약이 있습니까? –

답변

2

JSLint 인을 아주 현명하기 쉽습니다.

당신은 그냥이 작업을 수행 할 수 있습니다

이는 것
function repeat(str, times) { 
    var A = Array; 
    return new A(times + 1).join(str); 
} 

작동 : [? 자바 스크립트에서 배열의 길이를 초기화하는 적절한 방법]의

function repeat(str, times) { 
    return new Array.prototype.constructor(times + 1).join(str); 
} 
+0

완벽! 이것은 내가 찾고 있던 것입니다 :) –

+3

괜찮습니다. 흥미로운 사실은 링터를 해결하기 위해, 실제로는 더 어색한 코드를 생성했기 때문에, 린터는 의도 한 것과는 정반대의 역할을한다는 것입니다. 이 문제가 많이 발생하면 다른 조사자를 조사 (또는 프로젝트 리드 조사)하는 것이 좋습니다. –

+0

나는 어색함을 정말로 신경 쓰지 않는다. JSLint가 해킹을 무시할 수 있도록 해킹이 있는지를 확인하는 것이 진정으로 흥미 롭습니다. –