在数组中重命名多个相同的实例

时间:2013-07-02 14:32:43

标签: javascript jquery arrays string rename

我有一系列标题(句子)。其中一些标题在整个数组中重复,例如我的数组是(为清晰起见缩短了标题):

var arr = ['a','b', 'c', 'a', 'f', 'r', 'b', 'a'];

正如您所看到的,某些值会重复多次。我需要通过将计数器(从1开始)附加到第一个匹配的匹配项来重命名多个匹配项。 所以最后我必须:

'a', 'a1', 'a2', 'b', 'b1'

这意味着我需要为每次重复发生存储计数器。

我怎么能在javascript / jquery中写这个?

2 个答案:

答案 0 :(得分:1)

这是一些伪代码,其中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]];
  }
}

答案 1 :(得分:0)

语言不可知算法

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然后我认为一切都差不多。