2017-10-24 39 views
0

私はいくつかのロジックを行う必要があるため、ループ内の重複する値を比較しようとしています。私の問題は、私が期待した出力を得ることができないということです。ループ内で変数を設定する

var tempVal; 
for (i = 0; i < obj.length; i++) { 
    var items = obj[i]; 
    tempVal = items.fund; 
    console.log(tempVal); 
    console.log(tempVal == tempVal); 
    if(tempVal == tempVal){ 
     //do something 
    } 

私の例では、tempVal変数に2つの同じ値があります。私のconsole.log(tempVal == tempVal)trueを最初のループで返しますが、最初のループでは空であるため何も比較されないので、最初のループにはnullまたはundefinedが返されると思いました。私が必要とするのは、最初に戻る返品falsetrueです。ありがとう

+0

これらは同じものであるため、trueを返します。それに別の名前をつけて、次に – guradio

+0

を比較してください。 'tempVal == tempVal'は、' NaN'を除く 'tempVal'のすべての可能な値に対して' true'でなければなりません。なぜあなたはそれを自分と比較するのか、なぜなら、「tempVal = items.fund」を割り当てると、「比較するものはないと思う」と私は理解していません。変数は 'undefined 'でも構いませんが、' tempVal'が 'undefined'なら' tempVal == tempVal'は 'true'になります。おそらくあなたはここで達成しようとしていることを説明することができます。 – nnnnnn

+0

私はそれを正しく説明しなければ申し訳ありません。ここに。 items.fundがすべてのループで同じ値を持つかどうかはどのようにわかりますか?例えば、最初のループでitems.fundは "TEST"に等しく、2番目のものは "TEST2"で3番目のループは再び "TEST"になります。それをどのようにフィルタリングできますか? – chiradee

答えて

2

あなたは同じ変数を比較しています、明らかにそれらが等しい、別の変数を作成し、比較します。

tempVal = items.fund; 
console.log(tempVal); 
console.log(tempVal == tempVal); //both are same 
+0

items.fundがすべてのループで同じ値を持っているかどうかはどのようにわかりますか?例えば、最初のループでitems.fundは "TEST"に等しく、2番目のものは "TEST2"で3番目のループは再び "TEST"になります。それをどのようにフィルタリングできますか? – chiradee

+0

あなたは私の例では – Sajeetharan

+0

のforループを使用する必要があります。私はすでにループのために使用しています – chiradee

0

初期値を定義していません。だから、変数をobuseと比較すると、selfは常に等しい。なぜ複雑さを取り除くために別の名前を使用していないのですか?

var tempVal; 
    for (i = 0; i < obj.length; i++) { 
     var items = obj[i]; 
     temp = items.fund; 
     console.log(temp); 
     console.log(temp == tempVal); 
     if(temp == tempVal){ 
       //do something 
       } 
関連する問題