私は、ユーザーに名前を選択させるアプリケーションに取り組んでいます。通常はすぐに変更するまで、一時的な名前(一致することはありません)がすでに割り当てられています。
ユーザーが接続するときに、選択した名前がすでに使用されている場合は、名前に_#が追加され、ユーザーリストに追加されるようにします。
例:「ジョン」はユーザーリストにあります。誰かが接続し、「ジョン」という名前を選択します。それらの名前は「John_1」に変換され、ユーザーリストに追加されます。別の「John」が参加する場合、その名前は「John_2」などです。
現在、それらはすべて同じ名前を持つことができます。何度も試してみましたが、どこにも答えが見つからないので、質問する時が来ました。私はJavaScriptとコーディングにまったく慣れていないので、誰かが時間をかけたいのであれば、説明は素晴らしいでしょう。
ありがとうございました。
名前リストはreduce()
、名前に一致する正規表現と、それに続くオプションの_
数字を使用して数えることができます。その情報を使用して、新しい名前を作成できますpush()
。
let names = ['John', 'Mark', 'Steve', 'John_1', 'Johnny']
function addName(newName, names){
let re = new RegExp(`^${newName}(_\\d+)?$`)
let matches = names.reduce((count, name) => name.match(re) ? count+1 : count, 0)
let fixedName = matches ? newName+'_'+matches : newName
names.push(fixedName)
return fixedName
}
addName("John", names)
addName("Jennifer", names)
addName("Jennifer", names)
addName("Tom", names)
addName("Tommy", names)
let newName = addName("Jennifer", names)
console.log(names)
console.log("added:", newName)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加