0

我有一个清单

listOfStrings = ["A1 something bla", "A1 something bla", "A2 something bla", "A2 something bla",]

我想遍历列表并将每个条目重命名为 c1v1、c1v2、c2v1、c2v2

我试过了:

var increment = 1;

for( i = 0; i < listOfStrings.length; i++)
{

listOfStrings.replace(/A1.*/g , 'c1v' + increment);
listOfStrings.replace(/A2.*/g , 'c2v' + increment);

increment++;

结果是 c1v1、c1v2、c2v3、c2v4

这可能吗?

4

2 回答 2

0

而不是这样做,你可以做

for(i = 1; i < (listOfStrings.length+1); i++) {
  listOfStrings[i-1] = listOfStrings[i-1].replace(/A1.*/g , 'c1v' + i);
}
于 2020-12-11T21:19:25.430 回答
0

您需要处理各个数组元素。而且由于replace()没有就地修改字符串,因此您必须将结果分配回去。

要获得所需的编号,您需要一个单独的计数器来替换A1...withc1v#A2...with c2v#。您可以使用一个对象来保存多个计数器,然后使用一个函数通过递增相应的计数器来生成替换。

const listOfStrings = ["A1 something bla", "A1 something bla", "A2 something bla", "A2 something bla", ]

const counters = {
  1: 0,
  2: 0
};

for (i = 0; i < listOfStrings.length; i++) {
  listOfStrings[i] = listOfStrings[i].replace(/A([12]).*/, (m, num) =>
    'c1v' + ++counters[num]);
}
console.log(listOfStrings);

于 2020-12-11T21:24:21.803 回答