Я использую этот код JavaScript для добавления элемента в массив объектов, содержащих критерии поиска.JavaScript inline If/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».
Похоже, это что-то делать с кодом форматирования и разбиения на несколько строк.
Конечно, я мог бы использовать полную нотацию if/else, но почему эта нотация не работает?
'+' имеет более высокий приоритет, чем '?'. Вы не делаете то, что считаете себя. Ваш код эффективно '(значение + (to_from ===" to "))? "T23: 59: 59": "T00: 00: 00" ' – Phylogenesis
Имеет ли переменная' значение' данные? – VadimB
Попробуйте (значение + ((to_from === "to")? "T23: 59: 59": "T00: 00: 00")) и убедитесь, что 'значение' не пусто – Weedoze