Javascript вырезать строку после 3-го символа в строке - PullRequest
0 голосов
/ 23 октября 2019

Мне нужно написать функцию, которая возвращает 3 строки после символа ',' так что если нет ни 1, или 2, или 3, чтобы вернуть пустую строку, если ',' символ найден, иначе вернуть 3 строки ... я написал эти функции, ноэто очень интенсивный процессор ... может быть короче и быстрее код?

https://jsfiddle.net/1nfyq327/

    var str = 'AAA BBB CC., DD EE, FF FF, GG GG, HH HH, II II, JJ JJ, GG GG';

    var res = str.substring(0, str.indexOf(', ', str.indexOf(', ', str.indexOf(', ')+1)+1));

    console.log(res);

Результат:

AAA BBB CC., DD EE, FF FF

Результат в порядке, но янужен более быстрый код, потому что он будет выполняться на маломощном процессоре, поэтому скорость очень критична ...

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Используйте split, slice и join:

var str = 'AAA BBB CC., DD EE, FF FF, GG GG, HH HH, II II, JJ JJ, GG GG';


var result = str.split(',').slice(0,3).join(',');

console.log(result);
1 голос
/ 23 октября 2019

Вы можете разделить с пределом String#split и присоединиться к массиву.

var string = 'AAA BBB CC., DD EE, FF FF, GG GG, HH HH, II II, JJ JJ, GG GG',
    result = string.split(',', 3).join(',')

console.log(result);
1 голос
/ 23 октября 2019

С точки зрения скорости, вы мало что можете сделать.
Код, который вы написали, работает на O(n), что является наилучшей из возможных сложностей по времени для вашей проблемы.

Вы можете поигратьс собственными функциями (split(), substring() ..., которые реализованы в c ++ и, следовательно, будут выполняться быстро), чтобы увидеть, является ли одна из них более быстрой, или переписать ее в чистом javascript с циклом for. И сравните результаты.

В вашем случае лучшее, что вы действительно можете сделать, - это написать небольшой тест для тестирования скорости вашего решения и сравнить его. Хотя существует высокая вероятность того, что в вашем коде есть что-то, что работает медленно. :)

...