Как правильно прописать цикл? Есть строка 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 Как правильно прописать цикл, чтобы не было ошибки?
Прежде всего, проблема может быть вызвана тем, что вы не обновляете исходную строку 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>.
Прежде всего, проблема может быть вызвана тем, что вы не обновляете исходную строку 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>.