js 重复名称加索引

这篇博客探讨了如何使用JavaScript处理具有重复名称的对象数组,并为重复的名称添加索引。通过三个不同的函数实现,展示了如何迭代数组,检查名称是否已存在,以及如何更新或创建新的对象来确保唯一性。这些函数适用于数据清洗和处理场景,特别是当需要对具有重复属性的数据进行操作时。
摘要由CSDN通过智能技术生成

js 重复名称加索引

const arrNew = [
        {
            name: '小王',
            num: 1

        },
        {
            name: '小李',
            num: 1

        },
        {
            name: '小王',
            num: 2

        },
        {
            name: '小韩',
            num: 3

        },
        {
            name: '小李',
            num: 1

        }
    ]

1,
在这里插入图片描述

function setRepeatArr(arrNew) {
        let obj = {}
        arrNew.forEach(item => {
            if (obj[item.name] !== undefined) {
                obj[item.name]++
                item.name = item.name + obj[item.name]
            } else {
                obj[item.name] = 0
            }
        })
        return arrNew
    }
    console.log('====================================');
    console.log(setRepeatArr(arrNew));
    console.log('====================================');

2
在这里插入图片描述

function setRepeatArr(arrNew) {
        let obj = {}
        arrNew.forEach((item, index) => {
            if (obj[item.name]) {
                obj[item.name].num++

                if (!obj[item.name].setStatus) {
                    let oldData = arrNew[obj[item.name].index]
                    oldData.name = oldData.name + '1'
                    obj[item.name].setStatus = true
                }
                item.name = item.name + obj[item.name].num
            } else {
                obj[item.name] = {
                    num: 1,
                    index: index,
                    setStatus: false
                }
            }
        })
        return arrNew
    }
    console.log('====================================');
    console.log(setRepeatArr(arrNew));
    console.log('====================================');

3 单个的并且num>1的加1
在这里插入图片描述

    function setRepeatArr(arrNew) {
        let obj = {}
        arrNew.forEach((item, index) => {
            if (obj[item.name]) {
                let indexArr = obj[item.name]
                indexArr.push(index)
                if (indexArr.length === 2 && (arrNew[indexArr[0]].num <= 1 || !arrNew[indexArr[0]].num)) {
                    arrNew[indexArr[0]].name += + '1'
                }
                item.name += indexArr.length

            } else {
                obj[item.name] = [index]
                if (item.num > 1) {
                    item.name += 1
                }
            }
        })
        return arrNew
    }
    console.log('====================================');
    console.log(setRepeatArr(arrNew));
    console.log('====================================');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值