我想以一种更有效的方式编写代码的这一部分。
我不知道在这种情况下使用哪种模式:
l.match(/meite/) && (l = 'meite' + h);
l.match(/rafael/) && (l = 'rafael' + h);
l.match(/maicon/) && (l = 'maicon' + h);
l.match(/player1(?:\.|_)/) && (l = 'player1' + h);
l.match(/player2(?:\.|_)/) && (l = 'player2' + h);
l.match(/player3(?:\.|_)/) && (l = 'player3' + h);
l.match(/player4(?:\.|_)/) && (l = 'player4' + h);
l.match(/player5(?:\.|_)/) && (l = 'player5' + h);
l.match(/player6(?:\.|_)/) && (l = 'player6' + h);
l.match(/player7(?:\.|_)/) && (l = 'player7' + h);
l.match(/player8(?:\.|_)/) && (l = 'player8' + h);
在这种情况下,什么是好的做法?
答案 0 :(得分:5)
您可以使用循环遍历每个部分。
// The first set of items
['meite', 'rafael', 'maicon'].forEach(i => l.match(new RegExp(i)) && (l = i + h))
// The second set of items
for(let i = 1; i < 9; i++) {
l.match(new RegExp(`player${i}(?:\.|_)`) && (l = 'player' + i + h);
}
答案 1 :(得分:3)
最后一部分可以用一个正则表达式完成,以捕获组中玩家的数量。
let m = l.match(/player([1-8])(?:\.|_)/);
if (m) l = 'player' + m[1] + h;
答案 2 :(得分:3)
您可以采用单个正则表达式并采用匹配的值。
var match = l.match(/meite|rafael|maicon|(player[1-8](?:\.|_))/);
if (match) l = match[0] + h;