2016-10-01 18 views
2

これらの文字列内の文字に基づいて文字列の並べ替えを試みています。私はこの配列をログインしたときにこれまでのところ、私はこの文字列内の文字に基づいて文字列を並べ替える

function doMath(s) { 
 

 
    let arr = s.split(' '); 
 
    let letterArr = []; 
 
    let sortedArr = []; 
 
    let n = 0; 
 
    for (var i = 0; i < arr.length; i++) { 
 

 
    n = arr[i].indexOf(arr[i].match(/[a-z]/i)); 
 
    letterArr.push(arr[i][n]); 
 

 
    } 
 
    letterArr.sort(); 
 

 
    console.log(letterArr); 
 

 
    for (i = 0; i < arr.length; i++) { 
 
    for (var j = 0; j <= arr[i].length; j++) { 
 

 
     if (arr[i].indexOf(letterArr[j]) > -1) { 
 
     sortedArr.unshift(arr[i]); 
 
     } 
 

 
    } 
 
    } 
 
    console.log(sortedArr); 
 
} 
 

 
doMath("24z6 1x23 y369 89a 900b");

問題が示されています。私はsortedArr.push(arr[i]);、 を使用した場合、出力は次のようになります。

["24z6", "1x23", "y369", "89a", "900b"] 

私はsortedArr.unshift(arr[i]);を使用する場合しかし、私は出力を得る:

["900b", "89a", "y369", "1x23", "24z6"] 

baの前に来て、なぜ私はわかりません。

ソートのためにa-zとしたいだけです。私はpush()を試しましたが、正しいですが後方に(z-a)です。 unshift()を試してみると、baが切り替わる点を除いて正しいです。

+0

配列をソートするための何の条件?入力を配列として逆にしたいのですか、または特定の順序がありますか? –

+0

私はちょうどそれがソートのためにa-zであることを望みます。私はプッシュを試みましたが、それは正しかったが、逆方向にしようとすると(za)、bとa以外のものは正しいです。 – sourlemonaid

+0

あなたは次のようにしたいと思います: '[" 89a "、" 900b "、" 1x23 "、" y369 " 24z6 "]'正しい?私は 'y'の後に' x'を望んでいないと仮定しています。 –

答えて

6

function doMath(s) { 
 
    return s.split(' ').sort(function (a,b) { 
 
     return a.match(/[a-z]/i)[0].localeCompare(b.match(/[a-z]/i)[0])}) 
 
} 
 

 
console.log(doMath("24z6 1x23 y369 89a 900b"));

+1

あなたのコードにいくつかの説明を書いておくと良いでしょう。さらに、OPが使用しているのと同じ組織(つまり、結果を返す 'doMath()'関数を使用する方が良いでしょう。もう一つの改善点は、すべての内容を 'console.log()'でスニペットに入れて、人々が正しい出力を生成していることを確認できるようにすることです。 – Makyen

+0

それは人々がコンソールウィンドウにペーストをコピーできるように行われました。そして、console.logは必要ありません。しかしdoMathの編集を行います – Keith

+0

コンソールにコピー&ペーストするのは、 "Run code snippet"ボタンをクリックするよりもかなり労力がかかります。そのような単純なものであっても、人々はコード[スニペット](https://blog.stackoverflow.com/2014/09/introducing-runnable-javascript-css-and-html-code-snippets /)コンソール/ devtoolsを開き、あなたのコードをコピー&ペーストしてください。ほとんどの人は真剣にそれほど気にしません。 – Makyen

関連する問題