Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有一个js等价于c的.Contains#_Javascript_C# - Fatal编程技术网

Javascript 是否有一个js等价于c的.Contains#

Javascript 是否有一个js等价于c的.Contains#,javascript,c#,Javascript,C#,在c#中,我创建了一个元音数组,然后使用它来比较字符串是否包含数组中的任何元素,但我不知道如何在JavaScript中实现。我使用.Contains()查找字符串单词的下一个字符是否为元音。如果单词的下一个字符是元音,则将其设置为大写并连接到字符串结果,否则,只需将其连接到字符串结果,而不改变大小写 下面是我在c#中的实现: 静态字符串反转器(字符串字) { //字符串[]元音={“a”、“e”、“i”、“o”、“u”}; 列表元音=新列表{“a”、“e”、“i”、“o”、“u”}; 字符串结果

在c#中,我创建了一个元音数组,然后使用它来比较字符串是否包含数组中的任何元素,但我不知道如何在JavaScript中实现。我使用.Contains()查找
字符串单词
的下一个字符是否为元音。如果单词的下一个字符是元音,则将其设置为大写并连接到
字符串结果
,否则,只需将其连接到
字符串结果
,而不改变大小写

下面是我在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) 
相同“包含”操作的时间

因此,算法应该做到这一点:

  • 有一套预先生成的已知元音(在数学意义上)
  • 对于字符串中的每个字符,检查该字符是否在步骤1中的集合中
  • (从您的代码中,而不是您的帖子中,我看到您构建了一个新的输出字符串,其中元音大写-这可以通过
    StringBuilder
    而不是
    string+=
    高效地完成)
  • 下面是C#中的算法:

    [2] :JavaScript
    Object
    和.NET的
    System.Object
    除了共享相同的名称外,完全不相关。在.NET中,它是所有引用类型的通用超类,而在JavaScript中,它是名称/值集合结构

    在c#中,我创建了一个元音数组,然后使用它来比较字符串是否包含数组中的任何元素,但我不知道如何在JavaScript中实现

    我觉得最好向您展示一个更快的算法,而不是直接将您的算法(使用元音数组作为字符串)改编为JavaScript

    一般来说,索引向量类型结构(如.NET中的
    Array
    ArrayList
    List
    )对“包含”测试不利,因为程序必须检查每个值是否匹配(即
    O(n)
    时间),而哈希表(
    Dictionary
    )或
    HashSet
    等结构具有
    O(1) 
    相同“包含”操作的时间

    因此,算法应该做到这一点:

  • 有一套预先生成的已知元音(在数学意义上)
  • 对于字符串中的每个字符,检查该字符是否在步骤1中的集合中
  • (从您的代码中,而不是您的帖子中,我看到您构建了一个新的输出字符串,其中元音大写-这可以通过
    StringBuilder
    而不是
    string+=
    高效地完成)
  • 下面是C#中的算法:


    [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。FWIW
    array.prototype.includes(v)
    相当于
    array.prototype.indexOf(v)>-1