在 javascript 中的字符串末尾添加一个递增的数字,这样数组中就没有重复的条目
Add an incrementing number to end of string in javascript so there are no duplicate entries in the array
我需要获取一个名称数组,删除所有仅为数字的名称,如果有重复的名称,则在该字符串的末尾添加一个递增的数字。下面代码中的示例执行此操作,但仅限于第三个条目。之后它继续为 'test2' 或 'trick2' 而它应该是 'test3' 和 'trick3'。
const deviceNames = ['test', 'trick', '4', 'test', 'trick', '8', 'test', 'trick', 'test', 'trick']
const deviceNameSystem = (deviceNames) => {
let arr = [];
deviceNames.map((item)=>{
let counter = 1
arr.includes(item + counter) ? counter++ && arr.push(item + counter):
arr.includes(item) ? arr.push(item + counter):
arr.push(item)
})
console.log(arr.filter(x => isNaN(x)));
}
deviceNameSystem(deviceNames)
输出
[ 'test',
'trick',
'test1',
'trick1',
'test2',
'trick2',
'test2',
'trick2']
var nameHash = {}
var newList = [];
deviceNames.foreach(name => {
if(name == parseInt(name))
return;
if(!nameHash[name]) {
nameHash[name] = 1;
newList.push(name);
} else {
newList.push(name + nameHash[name]);
nameHash[name]++;
}
});
我需要获取一个名称数组,删除所有仅为数字的名称,如果有重复的名称,则在该字符串的末尾添加一个递增的数字。下面代码中的示例执行此操作,但仅限于第三个条目。之后它继续为 'test2' 或 'trick2' 而它应该是 'test3' 和 'trick3'。
const deviceNames = ['test', 'trick', '4', 'test', 'trick', '8', 'test', 'trick', 'test', 'trick']
const deviceNameSystem = (deviceNames) => {
let arr = [];
deviceNames.map((item)=>{
let counter = 1
arr.includes(item + counter) ? counter++ && arr.push(item + counter):
arr.includes(item) ? arr.push(item + counter):
arr.push(item)
})
console.log(arr.filter(x => isNaN(x)));
}
deviceNameSystem(deviceNames)
输出 [ 'test', 'trick', 'test1', 'trick1', 'test2', 'trick2', 'test2', 'trick2']
var nameHash = {}
var newList = [];
deviceNames.foreach(name => {
if(name == parseInt(name))
return;
if(!nameHash[name]) {
nameHash[name] = 1;
newList.push(name);
} else {
newList.push(name + nameHash[name]);
nameHash[name]++;
}
});