Javascriptで単語を文字のコレクションに分解する必要があります。次に、i)文字がコレクションに属しているかどうかを確認し、ii)このコレクションの文字を段階的に削除できるようにする必要があります。
たとえば、「cool」という単語は「c」、「o」、「o」、「l」に分解されます。'o'、'a'、および'l'を削除すると、'c'、'o'のみが残るはずです。
Javascriptでこれを実現するための適切なデータ構造は何ですか?
Javascriptで単語を文字のコレクションに分解する必要があります。次に、i)文字がコレクションに属しているかどうかを確認し、ii)このコレクションの文字を段階的に削除できるようにする必要があります。
たとえば、「cool」という単語は「c」、「o」、「o」、「l」に分解されます。'o'、'a'、および'l'を削除すると、'c'、'o'のみが残るはずです。
Javascriptでこれを実現するための適切なデータ構造は何ですか?
文字列!
var str = 'cool';
文字が文字列に含まれているかどうかを確認するには:
if(str.indexOf('o') > -1) // the character is in the string
最初に出現した文字を削除するには:
str = str.replace('o','');
これらのアクションのより「論理的な」表現を提供するために文字列オブジェクトを変更したい場合は、次のようにすることができます。
String.prototype.contains = function(char){
return this.indexOf(char) > -1;
};
String.prototype.remove = function(char){
return this.replace(char,'');
};
次のように使用できます。
if ('cheese'.contains('che'))
alert('Velviva!');
var str = 'hurt'.remove('r'); // 'hut'
str = 'banana'.remove('n'); // 'baana'
str = 'happy'.remove('c'); // 'happy'
配列!次のように文字列を分割するだけで取得できます。
var arr = "word".split("");
からのメソッドを使用して、Array.prototype
あなたが言ったようにコレクションを操作できます。たとえば、 index の文字を削除するには1
:
arr.splice(1,1);
再び文字列にするには:
arr.join('');
文字列から特定の文字を読み取りたいだけの場合は、そのインデックスに直接アクセスできます。
var str = "word";
str[1]; // "o"
配列で得られるのと同じ結果を得るために使用できる他の文字列メソッドもあります ( Shmiddty の回答を参照)。
そのために JavaScript のオブジェクトを使用できます。たとえば、次のようになります。
var cool = "cool".split(""); // `cool` is an array of single-char strings
var crossIndex = {};
cool.forEach(function(entry) {
crossIndex[entry] = true;
});
crossIndex
特定の文字があるかどうかのフラグが追加されたので、次のようになります。
var letter = "c"; // for instance
if (crossIndex[letter]) {
// It has it
// If you want to remove it:
delete crossIndex[leter];
}
else {
// It doesn't have it
}