我必須將單詞分解成Javascript中的字母集合。然後,我需要能夠i)檢查信件是否屬於收藏集,以及ii)逐步刪除此收藏的信件。例如,'cool'這個詞將被分解爲'c','o','o','l'。如果我刪除'o','a'和'l',我應該只留下'c','o'。JavaScript中的任何Java集合的等價物?
什麼是正確的數據結構來實現這個在Javascript中?
我必須將單詞分解成Javascript中的字母集合。然後,我需要能夠i)檢查信件是否屬於收藏集,以及ii)逐步刪除此收藏的信件。例如,'cool'這個詞將被分解爲'c','o','o','l'。如果我刪除'o','a'和'l',我應該只留下'c','o'。JavaScript中的任何Java集合的等價物?
什麼是正確的數據結構來實現這個在Javascript中?
的字符串!
var str = 'cool';
要檢查字符是否在字符串中:如果你想修改字符串的目的是提供
str = str.replace('o','');
:
if(str.indexOf('o') > -1) // the character is in the string
要刪除字符的第一次出現這些行爲的更多「邏輯」表示可以這樣做:
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
方法像你說的操作集合。例如,在指數1
刪除字符:
arr.splice(1,1);
要使其再次字符串:
arr.join('');
如果你只是想從一個字符串讀取特定字符,你可以訪問它的指數直接:
var str = "word";
str[1]; // "o"
還有其他字符串方法可以用來實現你會使用數組得到相同的結果(見Shmiddty's answer)。
這並沒有提到他如何測試一個角色是否在「集合」中,他將如何從集合中移除一個角色,或者實際上有用的任何東西...... – Shmiddty
是的,但我可以掃描數組並設置相應的條目爲「」例如。我很開心! – JVerstry
@Shmiddty我認爲這個問題只是要求數據結構。我可以添加一些例子。我也喜歡你的回答,以及你如何解釋我的第一句話:)。 – bfavaretto
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
}
關於這一點的好處是你可以使用語法'if(crossIndex中的字母)' – Shmiddty
看看在[underscore.string(https://github.com/epeli/underscore.string)庫。 –
您可以在數組和對象之間進行選擇,兩者都有其優點和缺點。 –
一串........ – Shmiddty