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('====================================');