【问题标题】:What is the best way to replace a string with a counter and increment the counter in JavaScript?用计数器替换字符串并在 JavaScript 中递增计数器的最佳方法是什么?
【发布时间】:2013-12-26 12:50:25
【问题描述】:

如果找到,我必须循环一个值数组并用递增值替换标识符。我的解决方案有效,但我正在寻找更好的方法来做到这一点:

// 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。

谢谢!

【问题讨论】:

  • 因为你是从0开始的,value.replace("__increment__", util.counter++)
  • 我明白了。行。这负责柜台。
  • testForString 是做什么的?
  • @Qantas94Heavy 添加在上面
  • @abhitalks:把它作为答案,我可以检查一下?

标签: javascript string counter substr


【解决方案1】:

关于您问题的第二部分,再加上您从 0 开始计数器这一事实,循环的第一遍将记录 0 次而不是 1 次。

您可以做些什么来解决这个问题并将其保持在一行中:

value.replace("__increment__", util.counter++)

即增加内联计数器。

其实++util.counter 会更好。并删除util.counter += 1 的下一行。

如何改进你的算法超出了我的能力范围!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2019-12-07
    • 2011-08-11
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    相关资源
    最近更新 更多