JavaScript的内联If / Else with string concatenation返回意外值

时间:2016-11-23 09:53:09

标签: javascript if-statement conditional-operator

我正在使用此JavaScript代码将项目添加到包含搜索条件的对象数组中。

如果搜索条件是日期范围的开头,我的目标是使用“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
            });

生成的对象数组对于项目的“value”属性具有错误的值。它应该被连接起来,如下:“2016-11-23T23:59:59”。

相反,它只有“23:59:59”的值。

enter image description here

看起来这与代码格式化和分成多行有关。

当然我可以使用完整的if / else表示法,但为什么这个表示法不起作用?

2 个答案:

答案 0 :(得分:1)

只需更改括号的顺序即可。内联IF条件不需要用括号括起来,就像普通的 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}}

答案 1 :(得分:1)

我不明白为什么不起作用,但您可以使用join()将数据压缩成字符串

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
            });