我有一系列标题(句子)。其中一些标题在整个数组中重复,例如我的数组是(为清晰起见缩短标题):
var arr = ['a','b', 'c', 'a', 'f', 'r', 'b', 'a'];
正如你所看到的,一些值重复了不止一次。我需要通过将计数器(从 1 开始)附加到第一个匹配项来重命名多个匹配项。所以最后我必须有:
'a', 'a1', 'a2', 'b', 'b1'
这意味着我需要为每个重复事件存储计数器。
我怎么能用 javascript/jquery 写这个?
我有一系列标题(句子)。其中一些标题在整个数组中重复,例如我的数组是(为清晰起见缩短标题):
var arr = ['a','b', 'c', 'a', 'f', 'r', 'b', 'a'];
正如你所看到的,一些值重复了不止一次。我需要通过将计数器(从 1 开始)附加到第一个匹配项来重命名多个匹配项。所以最后我必须有:
'a', 'a1', 'a2', 'b', 'b1'
这意味着我需要为每个重复事件存储计数器。
我怎么能用 javascript/jquery 写这个?
下面是一些伪代码,其中 tally 是标题计数映射(例如 {title:0}):
for (var i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) != i) {
tally[arr[i]]++;
arr[i] = arr[i] + tally[arr[i]];
}
}
语言无关算法
Add the elements of array to map so that no duplicate elements would be present and initialize it to 0.
Iterate through array
Check if the elemnt is present in map
if present then
map[element]++;
element+value of element at map+1;
else element
例子:
var arr = ['a','b', 'c', 'a', 'f', 'r', 'b', 'a'];
//initialize the map
map m
m[a]=0; m[b]=0; m[c]=0; m[f]=0; m[r]=0;
for(index=0 to size of array){
if(m[arr[index]]){
m[arr[index]]++;
write arr[index] with m[arr[index]];
}else{
write arr[index];
}
}
您可以使用此处提到的地图How to create a simple map using JavaScript/JQuery,然后我认为一切几乎相同。