Как правильно прописать цикл? Есть строка list, в котором несколько item, пишу цикл переборки каждого item и добавляю его в массив:while (list.indexOf('') != -1) { const newStr = str.replace(new RegExp(`.*?(.*)`), '$1'); const result = newStr.replace(new RegExp(`.*`), ''); items.set(`Item${i}`, result); i++; } Ошибка:FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory Как правильно прописать цикл, чтобы не было ошибки?

23 Фев 2023 в 19:52
97 +1
0
Ответы
1

Прежде всего, проблема может быть вызвана тем, что вы не обновляете исходную строку str после каждой итерации цикла. Вам нужно каждый раз обновлять str с учетом того, что уже найденные элементы <Item> будут удалены.

Подправленный код может выглядеть примерно так:

let i = 0;
while (str.indexOf('<Item>') !== -1) {
const start = str.indexOf('<Item>');
const end = str.indexOf('</Item>') + 7;
const result = str.slice(start, end)
items.set(`Item${i}`, result);
str = str.slice(end); // обновляем строку, удаляя найденный элемент
i++;
}

В этом коде после каждой итерации мы обновляем исходную строку str, чтобы исключить уже найденный элемент <Item>. Также мы используем методы indexOf и slice для получения подстроки с элементом <Item>.

16 Апр 2024 в 16:37
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир