如何逐步替换 classList 中的标记?

How to replace tokens in a classList incrementally?

我想找到一种方法,用更少的代码行将标记 'c1' 替换为 'c2',将 'c2' 替换为 'c3',等等。

目前,我正在使用 forEach 遍历每个元素,如下所示:

carsLeft.forEach(carLeft => moveCarLeft(carLeft))

然后为了将元素一 space 移到左侧,我输入了一个 switch 语句以将 class 重新分配给它:

switch(true) {
        case carLeft.classList.contains('c1'):
            carLeft.classList.replace('c1', 'c2')
            break
        case carLeft.classList.contains('c2'):
            carLeft.classList.replace('c2', 'c3')
            break
        case carLeft.classList.contains('c3'):
            carLeft.classList.replace('c3', 'c4')
            break
    }

我想知道是否有一种方法可以使用正则表达式将 switch 语句简化为如下所示:

carLeft.classList.replace(`c\d`, `c\d+`)

...或者除了使用正则表达式之外的另一种方式。感谢您抽出时间来阅读。任何帮助将不胜感激。

您可以使用 for 循环:

for (let i = 1; i <= 3; i++) {
    if (carLeft.classList.contains("c"+i)) {
        carLeft.classList.replace("c"+i, "c"+(i+1));
        break;
    }
}