js对数组对象中重复的值进行重命名处理

有一个数组对象

const arr = [
    {
        name: '小王',
        ...other
    },
    {
        name: '小李',
        ...other
    },
    {
        name: '小王',
        ...other
    },
    {
        name: '小韩',
        ...other
    },
    {
        name: '小李',
        ...other
    }
]

对该数组对象中的name值相同的进行添加序列号的重命名,
name值不同的则不处理
生成结果为

const arrNew = [
    {
        name: '小王1',
        ...other
    },
    {
        name: '小李1',
        ...other
    },
    {
        name: '小王2',
        ...other
    },
    {
        name: '小韩',
        ...other
    },
    {
        name: '小李2',
        ...other
    }
]

目前没有想到比较合适的处理方法,谢谢各位帮助!

阅读 2.5k
1 个回答
// => [{"name":"小王"},{"name":"小李"},{"name":"小王1"},{"name":"小韩"},{"name":"小李1"}]
demo(arr)

function demo (list) {
  const map = {}
  list.forEach(function (item) {
    map[item.name] = map[item.name] == null ? 0 : map[item.name] + 1
    map[item.name] && (item.name += map[item.name]);
  })
  return list
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏