2016-04-13 5 views
0

NodeJs(Express Framework)アプリケーションのJade Templateで2つの変数を比較しています。 値は同じですが、なぜ機能していないのか分かりません。 以下はコードです。NodeJs ExpressフレームワークアプリケーションのJade Templateでの文字列比較の問題

select#corpid.form-control.grid-select(name='corpid', style='display: none', value='#{ScheduleList.CorpId}', onchange="setEmployer(this)") 
    each item in Employers 
     if(new String(item.EmployerId) == new String(ScheduleList.ProdEmployerId)) 
      option(value = '#{item.EmployerId}', selected='selected') #{item.AccountName} 
     else 
      option(value = '#{item.EmployerId}', eid="#{new String(item.EmployerId)}", pid="#{new String(ScheduleList.ProdEmployerId)}") #{item.AccountName} 

enter image description here

あなたは上記を参照することができ、私は、ID = 101のために同じ来ているが、それでも、それはかのブロックごとに選択属性を追加されていない両方のIDを示しました。

答えて

1

var s_prim = 'foo'; var s_obj =新しい文字列(s_prim);

console.log(typeof s_prim); //ログ "string" console.log(typeof s_obj); == 新しい 文字列( 'A')のような単純な実行は==新しい文字列( 'A')は ポイントを証明するとき//ログ "オブジェクト"

のStringプリミティブとStringオブジェクトはまた、異なる結果を与えますs_obj .valueOf()を使用してプリミティブに変換してください。

+0

働いて、感謝@ Gurdershanシン –

-1

あなたが行く方法ではないnew String(...) == new String(...)と文字列の同等性をテストしています。 実際には、文字列オブジェクトが実際には同じではないことを比較しています。 2つの文字列を適切に比較するには、new String(item.EmployerId).valueOf() === new String(ScheduleList.ProdEmployerId).valueOf()またはString(item.EmployerId) === String(ScheduleList.ProdEmployerId)String()として使用してオブジェクトをStringプリミティブに変換する必要があります。

+0

等号がjavaにあり、nodeJsで尋ねています。 –

+0

申し訳ありませんが速すぎて、答えを更新します(これはまだ似ています) – Guillaume