Удивительно, но метод подстроки s.substr(0, s.length-2);
на самом деле немного быстрее для удаления px
(да, он выглядит не так чисто, и если есть пробел, он останется - "250px" -> "250"
против "250 px" -> "250 "
).
Если вы хотите учесть пробелы (что вам, вероятно, следует), то использование функции .trim()
на самом деле замедлит тест substr
настолько, что метод parseInt
действительно станет лучше.
Дополнительным преимуществом использования parseInt(s, 10)
является то, что вы также получаете преобразование типов и можете сразу же начать применять его к математическим функциям.
Итак, в конце концов, это действительно зависит от того, что вы планируете делать с результатом.
- Если это только отображение, то, используя
substr
метод без , вероятно, лучшим вариантом будет трим.
- Если вы просто пытаетесь увидеть, совпадает ли значение без px с другим значением
s.substr(0, s.length-2) == 0
, тогда лучше использовать метод substr
, так как "250 " == 250
(даже с пробелом) будет иметь вид true
- Если вы хотите учесть возможность пробела, добавить его к другому значению или вычислить что-то с ним, тогда вы можете рассмотреть возможность использования маршрута
parseInt
.
http://jsperf.com/remove-px-from-coord
Тесты на jspref учитывают пробел. Я также попробовал функции s.split('px')[0]
и s.replace(/ *px/g, '')
, обе оказались медленнее.
Не стесняйтесь добавлять дополнительные тестовые случаи.