給定一字符串數組,重複字符串後帶上編號,沒有重複的不作處理,生成一個新數組

 題目描述:

給定一字符串數組,重複字符串後帶上編號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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章