我必须将单词分解为 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("");
您可以使用 from 的方法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
}