2016-11-23 9 views
0

このJavaScriptコードを使用して、検索基準を含むオブジェクトの配列に項目を追加しています。JavaScriptのインライン文字列連結で/ Elseが予期しない値を返す場合

私の目標は、検索条件が日付範囲の開始の場合は「T00:00:00」を使用し、日付範囲の終了の場合は「T23:59:59」を使用することです。

//key = "Created", 
//value = "2016-11-23", 
//to_from = "from" 
collectedValues.push({ 
       key: key, 
       value: (value + 
        (to_from === "to") ? 
         "T23:59:59" : // when searching by date range, 
         "T00:00:00"), // "from" must be 00:00 and 
             // "to" must be 23:59 
       isPartialMatch: false, 
       toFrom: to_from 
      }); 

結果として得られるオブジェクトの配列の項目の「値」プロパティの値が正しくありません。これは、 "2016-11-23T23:59:59"のように連結されることになっています。

代わりに、値は "23:59:59"です。

enter image description here

これは複数行にコードのフォーマットと分割とは何かを持っているように見えます。

もちろん、完全なif/else表記を使用できますが、なぜこの記法は機能しませんか?

+2

' +をあなたのデータを内破あり'?'より高い優先順位です。あなたはあなたがあなたと思っていることをやっていません。あなたのコードは実質的に '(value +(to_from ==="〜 "))ですか? "T23:59:59": "T00:00:00" ' – Phylogenesis

+1

あなたの' value'変数にはデータがありますか? – VadimB

+2

(value +(to_from === "to")? "T23:59:59": "T00:00:00"))を試し、 'value'が空でないことを確認してください – Weedoze

答えて

1

角括弧の順序を変更するだけです。インラインIF条件は、通常のif (something)の構文のように、かっこで囲む必要はありません。

このコードは動作します:

  collectedValues.push({ 
       key: key, 
       value: value + (to_from === "to" ? 
         "T23:59:59" : // when searching by date range, 
         "T00:00:00"), // "from" must be 00:00 and 
             // "to" must be 23:59 
       isPartialMatch: false, 
       toFrom: to_from 
      }); 
1

を `動作していない理由を私は理解していないが、あなたは(参加使用することができます)のための文字列に

collectedValues = []; 
key = "Created", 
value = "2016-11-23", 
to_from = "from" 
collectedValues.push({ 
       key: key, 
       value: [value, 
        (to_from === "to") ? 
         "T23:59:59" : 
         "T00:00:00"].join(""), 
       isPartialMatch: false, 
       toFrom: to_from 
      }); 
関連する問題