2012-03-09 9 views
7

JSlintはArrayコンストラクタの使用が気に入らず、そのためのJSLintオプションはありません。したがって、長さnの配列を作成するには、次のように指定することはできません。JSLintを幸せにするためにnサイズの配列を作成するには?

var arr = new Array(n); 

これを回避するには以下の方法がありますか?通常の状況で

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

これは、(代わりに1の2行のコードを使用して)大したことではないですが、私は簡潔な文字列の乗数ハックを使用することができない後悔:

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

の可能複製(HTTP [JavaScriptで配列の長さを初期化する適切な方法?]://のstackoverflowを。 com/questions/4852017/proper-way-to-initialize-an-array-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にハックを無視させるためのハックがあるかどうかを見に興味がありました。 –

関連する問題