Самый быстрый и короткий способ получить текст до первого пробела?
var str = 'lorem ipsum dolor'; // Моя реализация: var word = str.slice(0,str.indexOf(' ')) Как еще можно? |
Teamur,
var str = 'lorem ipsum dolor'; var word = str.split(" ")[0]; alert(word); |
Dilettante_Pro,
а мне, как обычно, пришло в голову сложное решение! Эх! |
Но! Если строка состоит из 10000 слов, разделенных пробелом, то метод 'split' будет обрабатывать гигантский текст, создавать массив и, наконец, брать первое слово.
А 'indexOf' работает до первого совпадения, следовательно, закончит в данном случае значительно быстрее. Может что-то еще есть? Или придется пойти на компромис 'длина кода/скорость' ) Наверное, решением будут регулярные выражения, в которых я не силен! |
var str = 'lorem ipsum dolor'; var word = str.substring(0,str.indexOf(' ')); var str = 'lorem ipsum dolor'; var word = str.substr(0,str.indexOf(' ')); |
slice
var str = 'lorem ipsum dolor'; var word = str.slice(0,str.indexOf(' ')); 13,713,840 ±0.26% 80% slower substring var str = 'lorem ipsum dolor'; var word = str.substring(0,str.indexOf(' ')); 69,007,394 ±0.18% fastest substr var str = 'lorem ipsum dolor'; var word = str.substr(0,str.indexOf(' ')); 59,538,496 ±0.17% 14% slower ваш метод в данном случае на 80% медленнее substring |
Split так вообще черепаха, даже с такой короткой сточкой. Просто он не для этих целей.
|
j0hnik,
я и говорю 10000 слов и split - можно чай успеть попить ) |
Вариант через RegExp:
var word = /^.*?(?=\s)/.exec(str)[0]; var word = str.match(/^.*?(?=\s)/)[0]; |
с регексом проще тогда уж
var word = /^\S*/.exec(str)[0]; но indexOf всё равно быстрее. |
Часовой пояс GMT +3, время: 21:16. |