и получать с неё определённые элементы
вот пример: key.key2[23][1]
мне нужно получать числа 23 и 1, причём именно в [ ]
Я попробовал регулярные выражения и всё работает, но есть проблема
он медленно работает, около 10 миллисекунд на обработку одной строки
Для моих задач слишком медленно, может я что-то не так делаю..
Вот как я делал: key.match(/(?<=\[).*?(?=\])/g)
Регулярка для вытаскивания всех цифр в квадратных скобках: /\[(\d+)\]/ может будет быстрее работать, чем .* и lookaroundы. А так вообще самое быстрое решение — за линейное время пройти посимвольно по строке, встретили [ — встретили потенциальное число, встретили ] — оно закончилось
> А так вообще самое быстрое решение — за линейное время Циклом?
Да типа такого: let isInsideBrackets = false; let current = ‘’; let results = []; for (let i = 0; i < str.length; i++) { if (str[i] === ‘[‘) { isInsideBrackets = true; } else if (str[i] === ‘]’) { if (isInsideBrackets) { results.push(current); } current = ‘’; isInsideBrackets = false; } else if (isInsideBrackets) { if (str.charCodeAt(i) >= ‘0’.charCodeAt(0) && str.charCodeAt(i) <= ‘9’.charCodeAt(0)) { current += str[i]; } else { isInsideBrackets = false; } } }
ого...спасибо большое, изучу
спасибо огромное, алгоритм шикарно работает и очень быстрый
Обсуждают сегодня