我使用javascript复制名称,名称不应重复。然后我添加了一个-copy-
的计数器。例如,如果名称为joy
,则副本的结果应为joy-copy-1
。如果我再次复制joy
,则生成的名称应为joy-copy-2
。
我使用的是counter
,但这不正确。由于counter
始终在增加,因此不依赖于name
值。
示例代码:
var counter = 1;
var index = _.find(documents, function (o) {
console.log("--------------->", counter++);
o.name = o.name + '-copy-' + counter;
return o._id.$oid == CompareValue;
});
我正在从JSON文件中检索name
并添加counter
号码。但这不正确。
预期输出
例如
名称是快乐;
复制后
欢乐拷贝-1
再次复制欢乐
快乐 - 复制 - 2
再次复制欢乐
快乐 - 复制 - 3
如果我复制joy-copy-3,那么,
快乐 - 复制 - 3 - 复制 - 1
再次复制joy-copy-3
快乐 - 复制 - 3 - 复制 - 2
答案 0 :(得分:0)
您可以使用正则表达式检查副本并获取递增的数字。
function update(string) {
var match = string.match(/^(.+-copy-)(\d+)$/);
return match && match[2] !== '3'
? match[1] + (+match[2] + 1)
: string + '-copy-1';
}
var i = 10,
string = 'joy';
while (i--) {
console.log(string = update(string));
}
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
如何创建名称计数器地图呢?
var counters = [];
function copy(name){
return name + '-copy-' + (++counters[name] || (counters[name] = 1));
}
console.log(copy("joy"));
console.log(copy("joy-copy-1"));
console.log(copy("joy-copy-1-copy-1"));
console.log(copy("joy"));
console.log(copy("joy-copy-2"));
console.log(copy("joy"));
var counters = [];
var index = _.find(documents, function (o) {
//console.log("--------------->", counter++);
o.name = o.name + '-copy-' + (++counters[o.name] || (counters[o.name] = 0));
return o._id.$oid == CompareValue;
});