未重复出现的元素不处理,重复出现的元素加编号 不影响正常数组元素的顺序
<script>
var arr = ['z', 'v', 'd', 'z', 'k', 'd', 'z', 'k'];
var obj = {}; // 对象key值唯一的
for (let i = 0; i < arr.length; i++) {
var flag = true; // 是不是第一次出现
for (const key in obj) {
if (key == arr[i]) {
obj[key] = obj[key] + 1;
flag = false;
break;
}
}
if (flag) { // 首次出现的时候
obj[arr[i]] = 1;
}
}
console.log(obj); // {z: 3, v: 1, d: 2, k: 2}
for (const key in obj) {
if (obj[key] > 1) { // 如果大于1,说明元素在数组中重复出现了
var count = 0;
arr.forEach((item, index) =>{
if (item == key) {
count ++;
arr[index] = arr[index] + count; // 字符串拼接
}
})
}
}
console.log(arr); //['z1', 'v', 'd1', 'z2', 'k1', 'd2', 'z3', 'k2']
</script>