1. JavaScript / Говнокод #8528

    +153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    function isInteger(s)
    {
    	var i;
        for (i = 0; i < s.length; i++)
    	{   
            // Check that current character is number.
            var c = s.charAt(i);
            if (((c < "0") || (c > "9"))) return false;
        }
        // All characters are numbers.
        return true;
    }

    феерично

    Запостил: DrFreez, 15 Ноября 2011

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

    • Неплохо.
      Ответить
    • // Check that current character is number.
      // All characters are numbers.

      супер, конечно
      Ответить
    • Автор, что по задумке должна делать функция? Если проверять строку на оцифрованность, то всё нормально, кроме цикла без Break.
      Ответить
    • function isInteger(s) {
          return !/\D/.test(s);
      }
      Ответить
    • А вообще если писать адекватно, то так:
      function isInteger(s) {
          return parseFloat(s) === parseInt(s);
      }
      Ответить
      • Адекватно можно вообще без функции обойтись.
        Ответить
        • Зато если она вдруг пригодится, то она есть :)
          Ответить
      • при такой реализации будут проблемы, например, с числами вида '015', для parseInt('015') - это 13, так как число в восьмеричном представлении, а вот parseFloat('015') уже считает что это 15.

        Лучше сделать вот так:
        function isInteger(s) {
            return Number(s) === parseInt(s);
        }
        Ответить
        • Такие конструкторы лучше вообще не использовать
          parseFloat(s) === parseInt(s, 10);
          Ответить
          • Никаких проблем в использовании именно конструктора Number нет, это же не new Function() которая потом вызывает eval.

            Опять же, Ваша реализация снова имеет проблемы, например если s = '012a', функция должна возвратить false, так как это даже не число, однако, Ваша функция вернет true.

            Беда такого подхода является в том, что он использует функции вида parse... которые предназначены для того, чтобы выпарсить то что похоже на число из строки, а не рассматривают все строку как число, в отличие от конструктора Number
            Ответить
    • All characters are belong to us!
      Ответить
    • не понятно кто минусует и за что :)
      Ответить
    • Кроме всего прочего автор, по всей видимости, забыл, что integer может быть и отрицательным (:
      Ответить

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