2017-12-06 5 views
0

このコードは、名前の間のスペースを削除し、カンマを挿入します。 "Split"の代わりにFor Loopを使用して同じコードを実行する方法があるかどうかを知りたいのは興味深いです。私は似たようなことをするのを覚えていますが、それを実際に行うには十分ではありませForループを使用してこのコードを実行する方法はありますか?

function cutName (name) { 
 
    return name.split(' '); 
 
} 
 

 
alert(cutName("Amjad Ali"));

+1

コードは本当にコンマを挿入しません。それは、配列が 'alert'内の文字列に変換されたときに暗黙的に起こります。 '.join()'や '.join( '、')'を明示的に使うこともできます。 – Bergi

+0

これは 'Array'の' toString'メソッドに大きく依存しています。 –

+0

いいえ、ここでループを使用する理由はありません。もちろん、あなたはホイールを再発明することができます。すべての文字列メソッドですが、なぜでしょうか? – Bergi

答えて

1

何を求めていることは少し奇妙なようだが、ここであなたが行くことをコメントに同意します:

function cutName(name) { 
 
    let result = ""; 
 
    for (let i = 0; i < name.length; i++) { 
 
    if (name[i] === " ") result += ","; 
 
    else result += name[i]; 
 
    } 
 
    return result; 
 
} 
 

 
alert(cutName("Amjad Ali"));

これは戻りません。配列はsplit()となりますが、文字列化された結果は同じです(wh ichはあなたの後にあるように見えます)。あなたはだけのsplit()のように、配列をしたいです場合


、代わりにこれを試してみてください。

function cutName (name) { 
 
    let result = []; 
 
    let lastIndex = 0; 
 
    for(let i=0; i<name.length; i++) { 
 
    \t if(name[i] === " ") { 
 
     \t result.push(name.substring(lastIndex, i)); 
 
     lastIndex = i+1; 
 
     } 
 
    } 
 
    result.push(name.substring(lastIndex, name.length)) 
 
    return result; 
 
} 
 

 

 
console.log(cutName("Amjad Ali"));

+0

答えをありがとう。私はJSに新しいです、なぜあなたは "var"の代わりに使用する "let"を説明できますか? –

+0

@ user8468882、そこにたくさんの回答があり、あなたはそれをグーグルで調べるほうがよいでしょう。しかし、基本的に同じ変数を2回宣言するのを防ぎます(エラーを防ぐかもしれません)。私はvarを使用する方がletよりも優先されるようなシナリオは考えられません。 – Chris

0

function cutName(name){ 
 
    var result = ""; 
 
    for(const char of name) result += char === " " ? "," : char; 
 
    return result; 
 
} 
 

 
console.log(cutName("Jonas W"));

forループを使用して、すべての文字を反復処理できます。

関連する問題