#javascript
#javascript
Вопрос:
Я хотел бы написать эту часть моего кода более эффективным способом.
Я понятия не имею, какой шаблон использовать в такой ситуации :
l.match(/meite/) amp;amp; (l = 'meite' h);
l.match(/rafael/) amp;amp; (l = 'rafael' h);
l.match(/maicon/) amp;amp; (l = 'maicon' h);
l.match(/player1(?:.|_)/) amp;amp; (l = 'player1' h);
l.match(/player2(?:.|_)/) amp;amp; (l = 'player2' h);
l.match(/player3(?:.|_)/) amp;amp; (l = 'player3' h);
l.match(/player4(?:.|_)/) amp;amp; (l = 'player4' h);
l.match(/player5(?:.|_)/) amp;amp; (l = 'player5' h);
l.match(/player6(?:.|_)/) amp;amp; (l = 'player6' h);
l.match(/player7(?:.|_)/) amp;amp; (l = 'player7' h);
l.match(/player8(?:.|_)/) amp;amp; (l = 'player8' h);
Какова хорошая практика для такого случая?
Комментарии:
1. Вы могли бы использовать цикл
2. Что означает @GetOffMyLawn, так это то, что вы могли бы поместить аргументы в разделы l.match и l = в массив или другую структуру и выполнить итерацию по этой структуре, чтобы избежать перезаписи «l.match(» и » amp;amp; (l = » и » h);».
Ответ №1:
Вы могли бы использовать цикл для перебора каждой части.
// The first set of items
['meite', 'rafael', 'maicon'].forEach(i => l.match(new RegExp(i)) amp;amp; (l = i h))
// The second set of items
for(let i = 1; i < 9; i ) {
l.match(new RegExp(`player${i}(?:.|_)`) amp;amp; (l = 'player' i h);
}
Комментарии:
1. Вы могли бы даже создать массив строк, содержащий ‘meite’, ‘rafael, maicon, player1, player 2 и т.д. И выполнить цикл по всему массиву за один раз.
2. Напротив, я удалю свой ответ. Практически то же самое, не понял, что вы опубликовали.
3. Вы могли бы повторить и первую часть, повторяя
Array
из['meite', 'rafael', 'maicon']
.4. @Raymond Я думаю, тот, кто проголосовал против тебя, заметил, что ты не использовал свою переменную цикла в своем коде внутри цикла. Вы оставили это как литерал «/meite/».
5. Я имею в виду, что я понимаю это, я понимаю. Но люди sometimes действительно быстро набрасываются на нового пользователя, пытающегося внести свой вклад.
Ответ №2:
Последнюю часть можно было бы выполнить с помощью одного регулярного выражения, фиксирующего номер игрока в группе.
let m = l.match(/player([1-8])(?:.|_)/);
if (m) l = 'player' m[1] h;
Ответ №3:
Вы могли бы взять одно регулярное выражение и принять соответствующее значение.
var match = l.match(/meite|rafael|maicon|(player[1-8](?:.|_))/);
if (match) l = match[0] h;