Если необходимо обрабатывать большое количество строк, то имеет смысл использовать такой вариант (примерно в 5 раз быстрее предложенного варианта со split)
const str = '12:00 PM';
let pos = str.indexOf(':');
const x = str.slice(0, pos);
Aetae, странно, но у меня хром отрабатывает операцию с лимитом примерно в полтора раза дольше, чем без лимита. По логике получается, что под капотом всё-таки происходит обрезание полученного массива согласно лимиту, как в русской доке, которую скинул Владимир
Oleg, а мой хром даёт 70-кратную разницу в пользу лимита.
Я тоже раньше увлекался jsperf'ом, но быстро понял, что всё это ерунда: сегодня оно быстрее, а завтра медленнее. Нужно руководствоваться прежде всего здравым смыслом.