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

    +165

    1. 1
    objects = objects.concat([something]);

    альтернатива для push наконец найдена

    Запостил: strax, 21 Марта 2014

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

    • Спасибо автору, я буду применять этот метапаттерн в своих новых web5 htmlGL проектах!
      Ответить
    • для ценителей. где-то читал что перлов аналог такого ГК будет соптимизирован в push.
      Ответить
    • И где тут ГК? В данной строке не показано, что concat используется вместо push. Иногда нужна именно замена массива новым, со включением элемента.
      Ответить
      • Все равно не нужно было бы создавать дополнительный массив:
        objects = objects.concat();
        object.push(something);

        хотя первый вариант короче, конечно.
        Ответить
        • Согласен, concat / slice + push незначительно быстрее, но это данную строку ГК не делает :)
          Ответить
      • > Иногда нужна именно замена массива новым, со включением элемента.
        А в каких примерно ситуациях? Мне представляется либо юморист с хаскелем головного мозга (http://gvforum.ru/viewtopic.php?pid=2003#p2003), либо случай с уменьшением количества элементов (использование filter)
        Ответить
        • Например, стэк объектов в функции глубокого сравнения. Или что-то в стиле http://habrahabr.ru/post/208978/ для быстрой проверки был ли изменен объект, пока массово недоступны Object.observe или Proxy.
          Ответить

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