题目描述:
给定一字符串数组,重复字符串后带上编号1,2,3,...,没有重复的不作处理,不能改变元素组顺序,生成一个新数组
例子:输入: ['a','aaa', 'bb', 'aaa', 'ccc', 'bb', 'aaa'], 输出: ["a", "aaa1", "bb1", "aaa2", "ccc", "bb2", "aaa3"]
解题思路:
1.对象存储,key为原数组中的值,key对象的count为出现的次数
2.因为只出现一次的元素不做处理,故count=1的值,新数组中的值与原数组相等。
3.当有多次出现时,需修改第一次出现保存的原始值,后边加上编号1
function changeArr (arr) {
let obj = {}
let tmp = []
for (let i = 0; i < arr.length; i++) {
let keys = [];
keys = Object.keys(obj)
if (keys.includes(arr[i])) {
if (obj[arr[i]].count === 1) {
let index = tmp.findIndex(e => {
return e === arr[i]
})
tmp[index] = `${arr[i]}${obj[arr[i]].count}`
}
obj[arr[i]].count += 1
tmp.push(`${arr[i]}${obj[arr[i]].count}`)
} else {
obj[arr[i]] = {}
obj[arr[i]].count = 1
tmp.push(arr[i])
}
}
return tmp;
}
let res = changeArr(['a','aaa', 'bb', 'aaa', 'ccc', 'bb', 'aaa']);
console.log(res)