给定一字符串数组,重复字符串后带上编号,没有重复的不作处理,生成一个新数组

 题目描述:

给定一字符串数组,重复字符串后带上编号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)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DiuDiu_yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值