2016-06-14 9 views
-1

問題は、forループの後に配列データがどのように消えたかです。JS内のfor-loopの後に配列データがありません

説明最初に、変数 "bra_data"は "6!"のような文字列を受け取ります。または任意の「x!」または「x演算子y」形式の任意の数学演算子次に、配列に分割されます。

var bra_data = bra_data.split(" "); //bra data array 

インデックスを使用して、iを数式演算子を含む配列アイテムに設定します。次に、配列のインデックスを使用して

if(bra_data.indexOf("!")!=-1) { 
i = bra_data.indexOf("!"); 
} 

、答えは処理されます。

var x = (bra_data[i - 1] * 1); 
var i, x_fact; 
x_fact = 1; 
alert(bra_data[i - 1]); //A 
alert(bra_data[i]); //B 
for (i = 1; i <= x; i++) { 
    x_fact = x_fact * i; 
} 
alert(bra_data[i - 1]); //C 

// Cで処理した後、配列項目に「未定義」と警告する理由は?

+2

確かに最初の行でエラーが発生するはずです。 'i'をセットしていない限り、あなたのコードには含めません。前に 'i'を設定すると、forループでリセットされます。 – putvande

+0

あなたの変数 'i'を見てください。 – jmugz3

+1

1)' i'を使用する前に値を与えていません。 2) 'x'はある種のマジックナンバーに割り当てられているようです。 3)あなたが実際にやろうとしていることを教えていない。 –

答えて

-1

ありがとうございました。 for-loopに別の変数 'l'を使用すると、それが役に立ちました。

var x = (bra_data[i - 1] * 1); 
var l, x_fact; 
x_fact = 1; 
alert(bra_data[i - 1]); //A 
alert(bra_data[i]); //B 
for (l = 1; l <= x; l++) { 
x_fact = x_fact * i; 
} 
alert(bra_data[i - 1]); //C 

愚かな間違いですが、次のコードはうまくいきました。したがって、変数は決して私の心を越えたことはありません。

var i, x_fact, x_minus_y, x_minus_y_fact; 
x_fact=1; 
var x = (bra_data[i-1]*1); 
var y = (bra_data[i+1]*1); 
for(i=1; i<=x; i++) { 
x_fact= x_fact*i; 
} 
x_minus_y = (x*1)-(y*1); 
x_minus_y_fact=1; 
for(i=1; i<=x_minus_y; i++) { 
x_minus_y_fact= x_minus_y_fact*i; 
} 
var answer = (x_fact*1)/(x_minus_y_fact*1); 
alert(bra_data[i-1]); 

ありがとうございました。あなたは私の夜を救った。

+1

あなたの「固定」コードは元のコードとよく似ておらず、依然としてエラーが含まれています。元の質問に詳細を追加する場合は、回答を作成せずに編集してください。 –

+0

@MikeC答えを訂正し、質問の背景を追加しました。ありがとうございました。 –

関連する問題