2016-06-24 3 views
-1

文字数を圧縮するプログラムを作成しようとしています。私の非プログラミングの友人に、圧縮がどのように機能するかのアイデアを与えるだけです。文字列圧縮プログラムが動作しません

残念ながら、私は同じアルファベットを別の配列のアルファベットの単一の配列と他の同じセットに入れることはできません。

HDDから多くのデータを失ったため、コードは完全ではありませんでした。これはGoogleドライブにバックアップしたものです。誰もがこれで私を助けてくれる?ありがとう!

var string = "twinkle twinkle little star how i wonder what you are up above the world so high like a diamond in the sky twinkle twinkle little star" 

var brokenString = string.split("") 

var counter = 0; 
for (i = 1; i < brokenString.length; i++) { 
    while (brokenString[counter] === brokenString[i]) { 
    //var eval("array" + counter) = new Array(brokenString[i]) 
    var array = { 
     counter: brokenString[i] 
    } 
    counter++ 
    } 
} 

console.log(array) 
+0

私は '新しい配列(brokenString)は'あなたはそれがない何を考えていないと思います。 1つの要素で新しい配列を作成し、その要素は 'brokenString'配列です。 – Barmar

+0

実際には、その行までのすべてが、私が意図したとおりに正確に動作します。私が働くことができないループです。元の 'string'のすべての文字から要素を作成し、' brokenString'という配列に入れます。 –

+0

これで何かに 'new Array(brokenString)'を割り当てていないことに気づきました。その行の目的は何ですか? 'brokenString'はすでに配列であり、' new Array() 'を呼び出すことは何もしません。 – Barmar

答えて

1

キーが文字であり値がそれらの文字の数であるオブジェクトを使用します。

var string = "twinkle twinkle little star how i wonder what you are up above the world so high like a diamond in the sky twinkle twinkle little star" 
 

 
var letters = {}; 
 
for (var i = 0; i < string.length; i++) { 
 
    var char = string[i]; 
 
    if (char in letters) { 
 
    letters[char]++; 
 
    } else { 
 
    letters[char] = 1; 
 
    } 
 
} 
 

 
console.log(letters);

+0

Sir @Barmar、ありがとう。あなたが不適切に構造化された質問とそのコードで作業しなければならなかったのは残念ですが、助けてくれてありがとう!私が尋ねることができるなら、私がJSでより良くなるように私を紹介することができる特別なリソースはありますか?私はすでにcodecademyとSoloLearnで実際に多くのことを教えていないオンライン練習をしました。この問題であなたの意見を本当に感謝します。再度、感謝します! –

関連する問題