入力された名前の長さを知らずに、いくつかの入力名(例:John Doe-> J. Doe)を変換するコードを書いています(John Williams Roger Fred Doe、つまりJWRF Doe)。
2つの名前入力のアルゴリズムを理解しましたが、残りのケースをカバーする効率的な方法を見つけることができません。私の頭に浮かぶ唯一の方法は、残りのケースを最大10個の名前でラップすることです。それを行う他の効率的な方法はありますか?前もって感謝します!
function convertName(name) {
var [a, b] = name.split(" ");
var c = `${a[0]}${". "}${b}`;
return c;
}
私はあなたがこのようなものが欲しいと思います:
function convertName(name) {
const nameArray = name.split(" ")
return nameArray
.map((name, index) => index !== nameArray.length - 1 ? `${name[0]}.` : name)
.join(' ')
}
ここで何が起きてるの?
.map()
配列を繰り返して新しい配列を返します。1つまたは2つの引数、アイテム、インデックス(この順序で)を使用できますArray.map()
index !== nameArray.length - 1
全体が必要なため、インデックスの最後の項目ではないことを確認します
? ${name[0]}.
最後のアイテムでない場合は、切り捨てます
: name
もしそうなら、それを丸ごと残します.join(' ')
配列の.map()
戻り値を単一の文字列に戻しますこの関数は、名前ではありますどのように多くの部品を気にしない、それはまた、すなわち、単一の部分の名前を処理します。"John Snow The One" => "J. S. T. One"
しばらく"John" => "John"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加