Noobの質問私は、範囲とforループを記述しようとしています。たとえば、これは私がJavaScriptで生成したいものである:私はこれまで来ているfor CoffeeScriptの範囲のループ
var i, a, j, b, len = arr.length;
for (i = 0; i < len - 1; i++) {
a = arr[i];
for (j = i + 1; i < len; j++) {
b = arr[j];
doSomething(a, b);
}
}
最も近いは以下の通りですが、
- 不必要で高価なスライスが
- のアクセスを呼び出し生成します内部ループ
CoffeeScriptの内部配列の長さ:
for a, i in a[0...a.length-1]
for b, j in a[i+1...a.length]
doSomething a, b
生成されたコード:
var a, b, i, j, _i, _j, _len, _len1, _ref, _ref1;
_ref = a.slice(0, a.length - 1);
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
a = _ref[i];
_ref1 = a.slice(i + 1, a.length);
for (j = _j = 0, _len1 = _ref1.length; _j < _len1; j = ++_j) {
b = _ref1[j];
doSomething(a, b);
}
}
(どのように)これはCoffeeScriptの中で表現することができますか?
ありがとうございます。私はなぜそれがまだいくつかの不要なループカウンタを生成するのか分からないが、私はそれで生きることができる。 – alekop
@alekopループ内でループ変数( 'i'または' j')を変更した場合、ループの反復を変更しないということが、余分なカウンタの主な理由だと思います。 – epidemian