Я не получаю || оператор при использовании! = в Javascript? - PullRequest
0 голосов
/ 03 мая 2020

У меня есть следующий код, который пытается преобразовать строку времени, например, «9:45» или просто «9» в секунды, выполнить некоторые вычисления, а затем снова вернуться в правильном формате ЧЧ: ММ. Хотя мне удается выполнить sh формат, например, «9:45», я не могу понять, как это сделать, когда это просто «9». Все сводится к выражению if, использующему || и! = операторы, но я не могу приступить к работе, и мой вывод NaN:NaN

Вот мой код:

    var the_time = "10";
    var the_travel_time = 643 // This is already given in seconds

    var hms = the_time;   // your input string

    if (hms != "11" || hms != "10" || hms != "9"|| hms != "8") {

    var a = hms.split(':'); // split it at the colons

    // minutes are worth 60 seconds. Hours are worth 60 minutes.
    var the_time_inSeconds = (+a[0]) * 60 * 60 + (+a[1]*60);

    } else {
    var the_time_inSeconds = parseInt(hms)
    var the_time_inSeconds = hms * 60 * 60;
    }

    //the following code calculates the leave time
    //the_travel_time is taken from google's api call

    var the_leave_time = the_time_inSeconds - the_travel_time;

    var leave_hours = Math.floor(the_leave_time / 60 / 60);

    var leave_minutes = Math.floor(the_leave_time / 60) - (leave_hours * 60);

var the_leave_format = leave_hours + ':' + leave_minutes.toString().padStart(2, '0');

1 Ответ

0 голосов
/ 03 мая 2020

вы неправильно обращаетесь с логикой c, если условие:

if(hms != "11" || hms != "10" || hms != "9"|| hms != "8") {
    // with this logic all the flow passes through here 
else {
    // never flows around here
}

Один из вариантов - проверить длину вашей строки:

if( has.length > 1 ) {
    hms.split(':')
    // ...
} else {
   // ...
}

Я рекомендую вам прочитать это Логические операторы

...