Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2017, 18:45
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Самый быстрый и короткий способ получить текст до первого пробела?
var str = 'lorem ipsum dolor';

// Моя реализация:

var word = str.slice(0,str.indexOf(' '))

Как еще можно?
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2017, 19:08
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Teamur,
var str = 'lorem ipsum dolor';
var word = str.split(" ")[0];
alert(word);
Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2017, 19:14
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Dilettante_Pro,
а мне, как обычно, пришло в голову сложное решение!
Эх!
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2017, 19:23
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Но! Если строка состоит из 10000 слов, разделенных пробелом, то метод 'split' будет обрабатывать гигантский текст, создавать массив и, наконец, брать первое слово.
А 'indexOf' работает до первого совпадения, следовательно, закончит в данном случае значительно быстрее.

Может что-то еще есть? Или придется пойти на компромис 'длина кода/скорость' )

Наверное, решением будут регулярные выражения, в которых я не силен!

Последний раз редактировалось Teamur, 04.07.2017 в 19:28.
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2017, 21:27
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var str = 'lorem ipsum dolor';
var word = str.substring(0,str.indexOf(' '));


var str = 'lorem ipsum dolor';
var word = str.substr(0,str.indexOf(' '));
Ответить с цитированием
  #6 (permalink)  
Старый 04.07.2017, 21:32
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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
Ответить с цитированием
  #7 (permalink)  
Старый 04.07.2017, 21:36
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Split так вообще черепаха, даже с такой короткой сточкой. Просто он не для этих целей.
Ответить с цитированием
  #8 (permalink)  
Старый 05.07.2017, 00:29
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

j0hnik,
я и говорю 10000 слов и split - можно чай успеть попить )
Ответить с цитированием
  #9 (permalink)  
Старый 05.07.2017, 03:45
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Вариант через RegExp:

var word = /^.*?(?=\s)/.exec(str)[0];

var word = str.match(/^.*?(?=\s)/)[0];
Ответить с цитированием
  #10 (permalink)  
Старый 05.07.2017, 11:03
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

с регексом проще тогда уж
var word = /^\S*/.exec(str)[0];


но indexOf всё равно быстрее.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить текст teremok317 Общие вопросы Javascript 2 09.09.2016 01:44
Как получить текст с div'а Изучаю_JS Общие вопросы Javascript 21 03.02.2012 19:23
получить текст до пробела valera5505 Общие вопросы Javascript 7 08.01.2012 20:04
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
На входе HTML получить на выходе просто текст, как? Dmitry Общие вопросы Javascript 2 25.08.2008 10:42