ЙажаСценарий / Говнокод #3879 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
var s = '';
	s += (hours)  ? ( (hours>9)  ? hours  + ':' : '0' + hours  + ':') : '00:';
	s += (minute) ? ( (minute>9) ? minute + ':' : '0' + minute + ':') : '00:';
	s += (second) ? ( (second>9) ? second + '.' : '0' + second + '.') : '00.';

почему бы не сделать так:
var s = '';
s += (hours<10) ? '0' + hours : hours) + ':';
// и так далее...

Запостил: rudolff rudolff, (Updated )

Комментарии (25) RSS

  • почему бы не сделать ф-цию, которая дополняет строку до заданной длины нулями и юзать ее повсеместно...
    ну или на крайняк функцию
    return (num<10) ? '0' + num: num)
    Ответить
    • Почему бы не использовать встроенное форматирование даты?
      hh:mm:ss или что-то вроде?
      Ответить
    • Вот так было бы идеально
      String.prototype.addNulls = function(num, count)
      {
         num = '' + num;
         for(var i=0, n=count-num.length; i<n; i++ )
            num = '0' + num;
         return num;
      }
      Ответить
      • код идельным быть не может, ИМХО. разве что только самый простой и посему бесполезный.
        for(var i=num.length; i<count; ++i)
        Ответить
        • Согласен, но он должен делать то что должен и с минимальными затратами(главная затрата - это время на его понимание).

          String.prototype.addNulls = function(num, count)
          {
          num = '' + num;
          count = count-num.length;
          while(--count)
          num = '0' + num;
          return num;
          }
          Ответить
          • опять-таки не идеал
            num += '0';
            к тому же код будет выдавать на меньше нулей из-за прединкремента

            короче идеального кода не существует - он может только аромат иметь разный, ну и быть рабочим/нерабочим
            Ответить
        • но даже приведенная мной оптимизация - не лучший путь:
          ведь можно сразу сгенить строку из нулей
          new Array(count-num.length).join('0');
          см. http://govnokod.ru/3841
          Ответить
          • не догадывался о таком способе, надо взять на вооружение 😉
            Ответить
          • Странно что нет метода для заполнения строки определенным паттерном.
            Ответить
          • можно расширить стандарт необязательным параметром 🙂

            var txt = new String(string, count);
            Ответить
          • а мне не нравится, что мы выделяем целый массив, да еще в виде обьекта
            Ответить
            • "да еще в виде обьекта"
              - а что, в js бывает по другому? в нем всё объекты...
              Ответить
            • При таком способе, память под строку выделяется один раз при вызове ф-ции join, а не на каждой итерации как в предыдущих вариантах
              Ответить
                • Да. Ты не можешь поменять отдельный символ в строке как в C.
                  str[3]='X';
                  В js такая конструкция недопустима, если только str не массив или объект
                  Ответить
                  • проверил - и правда. так что действительно строка выделяется заново
                    ну тогда лучше способа чем через массив не могу придумать
                    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8