【发布时间】:2016-06-01 22:23:40
【问题描述】:
我的目标是转身
['sara', 'mike', 'sara','sara','Jon']
进入
'sara', 'mike', 'sara(1)','sara(2)' 'Jon'
我在计算重复总数时看到了一些解决方案,但是,我找不到任何我想做的事情..
ps。我不能使用 sort(),因为名称应该保留在原始数组中的位置..
我尝试使用常规的 for 循环,但没有任何效果,我也认为 map 方法可能会很好,但不知道该怎么做。
谢谢!
编辑:
我实际上是在这里想出这个的:
function words(arr){
var result=[];
var count=0;
for (var i=0; i<arr.length; i++){
if (result.indexOf(arr[i])==-1){
result.push(arr[i]);
}
else {
count++;
result.push(arr[i]+"("+count+")");
}
}
return result.join(',');
}
words(['sara', 'mike', 'sara','sara','Jon'] );
它可以工作,只是它返回 'sara,mike,sara(1),sara(2),Jon' 而不是 'sara','mike,'sara(1)','sara(2)','乔恩
有人知道怎么改吗?我已经尝试过加入、拆分等..
【问题讨论】:
-
如果您找到了计算重复项的解决方案,那么您不能在计数大于 1 时修改字符串吗?
-
不,它不起作用或者我不知道如何使它起作用。
-
然后展示您尝试过的内容,以便我们帮助您了解您犯错的地方。
-
@javascripting 试试这样的jsfiddle.net/Lg0wyt9u/934
-
请注意,您的解决方案仅在只有一个名称重复时才有效,但如果有多个名称重复,您的解决方案将失败(即
['sara','mike', 'sara', 'mike'])
标签: javascript loops dictionary count