2017-12-05 6 views
-1

JavaScriptのfor(){...}ループがのpass0であると聞いています。これを他のより明確な選択肢に使うべきではありません。 JSLintは、エラーが発生したときにエラーをスローするようになっています(ただし、上書きしない限り)。状況が許せばArray.prototype.forEach()を使用していることを理解していますが、この例では「クリアな」代替手段を使用できますか? C#数字を追加するときに "for"ループの代わりに使用するものは何ですか?

var number = 5; 
for (var i=0; i <= number; i++){ 
    log("somestring" + i); 
} 

私はEnumerable.Range(0, 5)foreach(){...}を使用します - しかし、私はJavaScriptでいないような代替を知っています。私は0 ... 5の数字の配列を作成することができますが、それは利益のために遠くに行くように思えます。

編集1

私はこのようなlodashかのjQueryを実装するための代替プラグインを捜しているわけではない、と私の質問は本当に「なぜJSLintはありません...」に関するものではありません。何をネイティブJavaScript代わりに使用できますか?

+0

あなたはロダッシュを考慮しましたか?これは、あなたが探している範囲関数を含んでいます。https://lodash.com/docs/4.17.4#range – klugjo

+4

JSLintはエラーをスローします。なぜなら、あなたのループは一回だけ繰り返します( 'return'ステートメントのため)。あなたのコード全体は、 'return" somestring "+ 0;'と同じです。 –

+0

はjQueryで$があるかもしれません。 –

答えて

0

あなたの番号を格納する配列を使用している場合は、.reduce()使用:

const num = [1, 2, 3, 4, 5] 
const val = num.reduce((acc, curr) => `${acc}${curr}`, 'somestring') 
console.log(val) 

編集:あなたは、ループのために最もなり、アレイを使用しない場合の事は、あります読める。私のアドバイスは、JSLintの言葉を無視することです。

もう1つの提案を投稿します。あなたが間に実行を中断する代わりにbreakまたはcontinueを使用することができるため、同じに

[...Array(5).keys()].reduce((acc, curr) => `${acc}${curr + 1}`, 'somestring') 
+0

「数字0〜5の配列を作成できましたが、それは利益のために長い道のりを向いているようです。」 –

+0

文字列を縮小または折り畳むと、文字列の連結問題が発生します。 – StuartLC

+0

私の編集内容をご覧ください。あなたのforループが最善の方法です。 – jaye

1

returnがオーバーライドjavascript.thisのループ間では良いアイデアではありません:それは配列を生成するために、配列インデックスを使用しています。また、データをforeach jqueryとして取得するには、以下のようにオブジェクトマップを同じにすることもできます。 それぞれの値を関数ごとの動的文字列として取得します。

var number = 5; 
var toReturn = function(){ 
var ar_data = []; 
for (var i=0; i <= number; i++){ 
    ar_data[i] = "somestring" + i; // Store your dynamic string into a variable 
} 
return ar_data; // return array 
} 
var data = toReturn(number); 

for(dt in data) // foreach type object mapping and tracing 
{ 
console.log(data[dt]); //print the individual item in array. 
} 
+0

ええ、私は例をねじ込んだ。私の編集を見てください –

関連する問題