用JavaScript替换字符串并增加计数器的最佳方法是什么?

3
我需要循环一个值数组,并在找到标识符时用递增的值进行替换。我的解决方案可以工作,但我正在寻找更好的方法来完成这个任务:
// somewhere
util.counter = 0;

// testForString
util.testForString = function (search_string, full_string, nowrap) {
    var s = nowrap ? "" : " ";
    return (s + full_string + s).indexOf(s + search_string + s) > -1;
};

// when saving a file, I loop over it's submitted form values
for (key in record) {
    if (record.hasOwnProperty(key)) {

        // TODO: improve
        value = record[key];
        if (util.testForString("__increment__", value) {
            set = value.replace("__increment__", util.counter);
            util.counter += 1;
        }
        obj[key] = set || value;
    }
}

我不太喜欢这种需要检查每个字段的__increment__占位符的方法,因此...

问题:有更好的方法吗?同时在同一步骤中获取计数器的值并递增它是否可能?

我不想使用jQuery,所以请仅使用JavaScript。

谢谢!


1
因为你从0开始,value.replace("__increment__", util.counter++) - Abhitalks
我明白了。好的,那就处理完计数器了。 - frequent
testForString 是做什么的? - Qantas 94 Heavy
@Qantas94Heavy 在上面添加了。 - frequent
@abhitalks:把它变成一个答案,这样我就可以检查了吗? - frequent
显示剩余2条评论
1个回答

1
关于您问题的第二部分,加上您从0开始计数的事实,循环的第一次通过将记录0次出现而不是1次。
为了解决这个问题并保持一行代码,您可以这样做: value.replace("__increment__", util.counter++) 即:内联递增计数器。
事实上,++util.counter 更好。并且删除下一行的 util.counter += 1
如何改进算法超出了我的能力范围!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接