2016-11-08 8 views
0

私は与えられた文字列をソートする練習をしています。文字列の各単語には、その中に数字が含まれています(この 'H3llo'のように書かれています)。文字列の各単語に含まれる数字は、返される新しい文字列の番号に従って、順番に配置する必要があります。ループ中にJavascriptで問題が発生しました。何が間違っていますか?

たとえば、入力が "is2 Thi1s T4est 3a"の場合、私の関数は "Thi1s is2 3a T4est"を返します。

私はほとんどクラックしましたが、私の出力は不完全です。ここに私のコードは次のとおりです。

function order(words) { 
    var lst = words.split(' '); 
    var count = 0; 
    var n = count + 1; 
    var s_n = n.toString(); 
    var new_l = []; 
    while (count < lst.length) { 
     if (lst[count].includes(s_n) === true) { 
      new_l.push(lst[count]) 
     } 
     count++ 
    } 
    return new_l.join(' '); 
} 

私はそれをテストする場合、代わりに取得する:

console.log(order("is2 Thi1s T4est 3a")); 
>>> 'Thi1s is2 3a T4est' 

私はこの取得:

console.log(order("is2 Thi1s T4est 3a")); 
>>> 'Thi1s' 

を誰も私が間違ってやっているものを私に説明できますか?

+2

遅かれ早かれ、あなたが学ぶ必要がある[ 'アレイ#sort'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)。 –

+1

'n'と' s_n'はループ内で設定する必要があります。 @MalkあなたはS_Nを変更することはありませんあなたは 'ループ – Malk

+0

は、これまでのところ、まだ – MountainSlayer

答えて

-1

あなたが間違っている主なことは、ループの前にs_nを文字列 '1'に割り当てることですが、ループ内でそれを更新することはありません。 countを更新するのと同時に、s_nを次の整数の文字列に更新する必要があります。

外側のループ内でnまたはs_nの値を更新していない部分は固定されていますが、現在のところカウントを両方とも使用しているため、コードはまだ有効ではありません(単語内で)検索し、単語のリストを通して検索を増やす。検索をインクリメントするには、内部ループ(および別の変数)が必要です。

+0

私は 'n ++'、 'count ++'、 's_n = n.toString();'を入れます。 whileループでは結果が悪化しました。 – MountainSlayer

+0

はい、あなたのコードに間違っているものを変更しない限り、それはまだ動作しません。 – Penguino

+0

[回答]をお読みください –

2

基本的には、現在のカウンターにはがあります。countつまり、増分番号とそれに一致する単語のリストを繰り返します。リストを反復処理した後にのみカウントを増やします。

function order(words) { 
 
    var lst = words.split(' '); 
 
    var count = 0; 
 
    var new_l = []; 
 
    while (count <= lst.length) { 
 
    for (i = 0; i < lst.length; i++) { 
 
     if (lst[i].includes(count)) { 
 
     new_l.push(lst[i]) 
 
     } 
 
    } 
 
    count++; 
 
    } 
 
    return new_l.join(' '); 
 
} 
 
console.log(order("is2 Thi1s T4est 3a"));

あなたがs_nを必要としないことにも注意してください - 変換は暗黙的であり、これはif文で暗黙的であるとして、あなたが=== trueは必要ありません。

関連する問題