Как исправить регулярное выражение в forEach, представляя разные результаты - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть файл JavaScript с forEach, который имеет два регулярных выражения, которые будут запускаться в зависимости от if.Неважно, какое условие я ставлю первым.Одно регулярное выражение заменяет текущие значения свойств json, а другое - значения предыдущих итераций.

Я попытался переключить операторы if.Я удалил if и попробовал регулярное выражение по одному.Неважно, что одно регулярное выражение, кажется, использует предыдущие циклы

stats.forEach( (stat) => {
    if(display_detail) {

        lsm.displayString = lsm.displayString.replace(/(\d{1,4})\s([_a-zA-Z][^\0]*)\s(\()()(\))/g, lsm.count + " $2 $3$4" + lsm.detail_array.join(',') + "$5");

    } else {

        lsm.displayString = lsm.displayString.replace(/(\d{1,4})\s([_a-zA-Z][^\0]*)/g, lsm.detail_array.join(',') + " $2")

    }            
});

элемент JSON

{ count: 2,
  displayString: '1 POne (9)',
  detail_array: [ 9, 14 ] }

После полного запуска, где я ожидаю детали (diplay_detail), я ожидаю этогонапечатать как: 2 POne (9,14)

Я получаю 1 POne (9)

Но если я прогоню его через другое регулярное выражение, я получу то, что ожидал получить:

9,14 POne ()

Я уверен, что он запускает первый цикл, поскольку displayString, хранящаяся в json, показывает столько же.DisplayString начинается с

0 POne ()

1 Ответ

0 голосов
/ 27 сентября 2019

Регулярное выражение является ошибочным для второго раунда ... Я был более сложным вопросом.Мне не нужно было проверять детали, я могу просто заменить парены, так как я заменяю всю строку внутри паренов.Это исправляет, может быть, не так элегантно, но работает.


    lsm.displayString = lsm.displayString.replace(/(\d{1,4})\s([_a-zA-Z][^\0]*)\s(\()[\(0-9,\)].*(\))/g, lsm.count + " $2 (" + lsm.detail_array.join(",") + ")");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...