Javascript 是否有一个js等价于c的.Contains#
在c#中,我创建了一个元音数组,然后使用它来比较字符串是否包含数组中的任何元素,但我不知道如何在JavaScript中实现。我使用.Contains()查找Javascript 是否有一个js等价于c的.Contains#,javascript,c#,Javascript,C#,在c#中,我创建了一个元音数组,然后使用它来比较字符串是否包含数组中的任何元素,但我不知道如何在JavaScript中实现。我使用.Contains()查找字符串单词的下一个字符是否为元音。如果单词的下一个字符是元音,则将其设置为大写并连接到字符串结果,否则,只需将其连接到字符串结果,而不改变大小写 下面是我在c#中的实现: 静态字符串反转器(字符串字) { //字符串[]元音={“a”、“e”、“i”、“o”、“u”}; 列表元音=新列表{“a”、“e”、“i”、“o”、“u”}; 字符串结果
字符串单词
的下一个字符是否为元音。如果单词的下一个字符是元音,则将其设置为大写并连接到字符串结果
,否则,只需将其连接到字符串结果
,而不改变大小写
下面是我在c#中的实现:
静态字符串反转器(字符串字)
{
//字符串[]元音={“a”、“e”、“i”、“o”、“u”};
列表元音=新列表{“a”、“e”、“i”、“o”、“u”};
字符串结果=”;
对于(int i=word.Length-1;i>=0;i--){
if(元音.Contains(单词[i].ToString()))
{
结果+=单词[i].ToString().ToUpper();
}
其他的
{
结果+=单词[i].ToString();
}
}
返回结果;
}
我试着搜索,但搜索只告诉我包含的内容
在c#中,我创建了一个元音数组,然后使用它来比较字符串是否包含数组中的任何元素,但我不知道如何在JavaScript中实现
我觉得最好向您展示一个更快的算法,而不是直接将您的算法(使用元音数组作为字符串)改编为JavaScript
一般来说,索引向量类型结构(如.NET中的Array
、ArrayList
和List
)对“包含”测试不利,因为程序必须检查每个值是否匹配(即O(n)
时间),而哈希表(Dictionary
)或HashSet
等结构具有O(1)
相同“包含”操作的时间
因此,算法应该做到这一点:
StringBuilder
而不是string+=
高效地完成)Object
和.NET的System.Object
除了共享相同的名称外,完全不相关。在.NET中,它是所有引用类型的通用超类,而在JavaScript中,它是名称/值集合结构
在c#中,我创建了一个元音数组,然后使用它来比较字符串是否包含数组中的任何元素,但我不知道如何在JavaScript中实现
我觉得最好向您展示一个更快的算法,而不是直接将您的算法(使用元音数组作为字符串)改编为JavaScript
一般来说,索引向量类型结构(如.NET中的Array
、ArrayList
和List
)对“包含”测试不利,因为程序必须检查每个值是否匹配(即O(n)
时间),而哈希表(Dictionary
)或HashSet
等结构具有O(1)
相同“包含”操作的时间
因此,算法应该做到这一点:
StringBuilder
而不是string+=
高效地完成)[2]:JavaScript
Object
和.NET的System.Object
除了共享相同的名称外,完全不相关。在.NET中,它是所有引用类型的一个常见超类,而在JavaScript中,它是一个名称/值集合结构。既然你说你能找到的唯一东西是includes,这告诉我你正在查找我想你要找的是indexOf。你可以使用indexOf来查看一个数组值是否也存在于另一个数组中。如果存在,则返回值索引,如果不存在,则返回-1。
我就是这样写的:
var testWords = [ 'a', 'b', 'c', 'd'];
function reverser(words){
var result = '';
words.forEach((word) => {
if(testWords.indexOf(word) > -1){
result += word;
}
})
console.log(result);
};
reverser(['b', 'd', 'e', 'z']);
如果您正在输入一个实际的字符串,并且只是尝试查看每个字母是否是对象中的键,那么您可以执行以下操作:
function reverserObj(word){
var result = '';
var splitWords = word.split("");
var obj = {a:0, e:0, i:0, o:0, u:0};
splitWords.forEach((letter) => {
console.log(letter);
if(obj.hasOwnProperty(letter)){
result += letter;
}
});
console.log(result);
}
reverserObj('hello world');
看看这些非常非常棒的javascript函数。你可以用它们做各种事情。因为你说你能找到的唯一东西是include,这告诉我你在寻找其他东西。我想你要找的是indexOf。你可以使用indexOf来查看数组值是否也存在于另一个数组中y、 如果是,则返回值索引,如果不是,则返回-1。 我就是这样写的:
var testWords = [ 'a', 'b', 'c', 'd'];
function reverser(words){
var result = '';
words.forEach((word) => {
if(testWords.indexOf(word) > -1){
result += word;
}
})
console.log(result);
};
reverser(['b', 'd', 'e', 'z']);
如果您正在输入一个实际的字符串,并且只是尝试查看每个字母是否是对象中的键,那么您可以执行以下操作:
function reverserObj(word){
var result = '';
var splitWords = word.split("");
var obj = {a:0, e:0, i:0, o:0, u:0};
splitWords.forEach((letter) => {
console.log(letter);
if(obj.hasOwnProperty(letter)){
result += letter;
}
});
console.log(result);
}
reverserObj('hello world');
看看这些非常非常棒的javascript函数。你可以用它们做各种事情。在js中使用包含
var hasWord = "this is a sample text.".includes("text");
在js中使用包含
var hasWord = "this is a sample text.".includes("text");
您的算法效率低下,因为它在
O(n*m)
时间内运行(其中n
是字符串长度,m
是元音数)。您应该使用O(1)
查找结构类似于按字符值索引的数组。我认为您正在查找or。您的算法效率低下,因为它在O(n*m)
时间内运行(其中n
是字符串长度,m
是元音数)。您应该使用O(1)
查找结构类似于按字符值索引的数组。我认为您正在查找or。FWIWarray.prototype.includes(v)
相当于array.prototype.indexOf(v)>-1