Как сохранить ведущий ноль в расписании - PullRequest
1 голос
/ 24 мая 2011

У меня есть выбор времени, но я хочу сохранить ведущий ноль:

var fastTrainReading = [0943, 0957, 1006, 1013 , 1027, 1036, 1043, 1057, 1106, 1113, 1127, 1136, 1213, 1227, 1236, 1243, 1257, 1306, 1313, 1327, 1336, 1343, 1357, 1406, 1413, 1427, 1436, 1443, 1457, 1506, 1513, 1527, 1537, 1543, 1559, 1606, 1613, 1627, 1636, 1643, 1657, 1704, 1718, 1728, 1735, 1749, 1758, 1816, 1830, 1847, 1859, 1906, 1911, 1930, 1936, 1941, 1959, 2006, 2017, 2027];

Это выполненная математика:

var currentTime = hour*100 + mins;
if ((day == 0) || (day == 6)) {
    document.write ("There are no buses today");
}  else {

var displayCount = 0;
        var TrainStr1 = "";
        for (var i=0, len=fastTrainReading.length; i<len; ++i) {
            if ((fastTrainReading[i] > currentTime) && (displayCount < 2)) {
                displayCount = displayCount+1;
                TrainStr1=TrainStr1 + fastTrainReading[i] + "<br/>";
            }
        }
    }
document.write (TrainStr1)

У меня было довольно хорошоищите, если я что-то пропустил, не стесняйтесь оскорблять меня (но направьте меня в правильном направлении).

Ответы [ 5 ]

2 голосов
/ 24 мая 2011

Самое простое решение - хранить данные о времени в виде строк, например, var fastTrainReading = ['0943', ....JavaScript будет приводить вас к целочисленным значениям в ваших процедурах вычислений.

Для комплексного решения для форматирования строк, соответствующего традиционным принципам, попробуйте sprintf () для javascript: http://www.diveintojavascript.com/projects/javascript-sprintf

1 голос
/ 24 мая 2011

По умолчанию вы не получите первые нули.

Поскольку вы знаете, что TrainStr1 равен 4, вы можете использовать следующую функцию для получения нулей.может вызывать функцию «отформатирован» перед использованием document.write

1 голос
/ 24 мая 2011

Вы можете попробовать использовать .toString()
, например:
TrainStr1=TrainStr1 +fastTrainReading[i].toString()+ "<br/>";
, чтобы сохранить время в виде строк.

0 голосов
/ 24 мая 2011

Просто объявите ваш массив как строки:

var fastTrainReading = ['0943', '0957', '1006', '1013'];

И не волнуйтесь fastTrainReading[i] > currentTime все равно будет работать. '100' > 99 == true

0 голосов
/ 24 мая 2011

Вам нужно обнулить свои цифры.

Number.prototype.zf = function _zeroFormat(digits)
{
    var n = this.toString(), pLen = digits - n.length;
    for ( var i = 0; i < pLen; i++)
    {
        n = '0' + n;
    }
    return n;
}

if ((fastTrainReading[i] > currentTime.zf(4)) && (displayCount < 2)) {
   displayCount = displayCount+1;
   TrainStr1=TrainStr1 + fastTrainReading[i] + "<br/>";
}

Как только вы нормализуете все свои числа, чтобы они были дополнены 0 до 4 цифр, сравнение строк возможно. В противном случае у вас будут проблемы. В настоящее время все выглядит так, будто ваш код пытался сравнить строку (например, элемент из fastTrainReading) и число (currentTime).

...