и получать с неё определённые элементы
                  
                  
                  вот пример: 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; } } }
 Жора
                          Змейкин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Жора
                          Змейкин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  ого...спасибо большое, изучу
 Жора
                          Змейкин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Жора
                          Змейкин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  спасибо огромное, алгоритм шикарно работает и очень быстрый
Обсуждают сегодня