繁体   English   中英

比较两个 arrays javascript 中的元素

[英]comparing elements in two arrays javascript

提示:本站提供中英文对照查看,鼠标放在中文字句上可显示英文原文。 若本文未解决您的问题,推荐您尝试使用帮您解决。

我刚刚开始学习 javascript,我正在尝试理解循环。 我有这个简单的 function 应该比较单词和元音数组之间的元素。

我正在尝试遍历元音,然后遍历单词,然后使用 if/else 语句来控制台。记录不是元音的单词的字母。

当我使用“.==”时,它只返回单词中的所有字符,但当我使用“===”时,它只返回元音。

我知道这可以通过其他方式完成,但现在我需要了解为什么会发生这种情况。

例子:

function checkvowel("hello") {

      const vowels = ["a","e","i","o","u"];

      for(let i = 0; i<vowels.length; i++){

        for(let j=0; j<word.length; j++){

          if (word[j] === vowels[i]){
             console.log(word[j])  --> OUTPUT "e" "o"
          }
          
         But when I do :

         if (word[j] !== vowels[i]){
             console.log(word[j])  --> OUTPUT "h" "e" "l" ...
          }
    
        }
      }

为什么会发生这种情况?

谢谢

由于您正在遍历单词和元音,因此只要当前元音与单词的当前字母不匹配,您就会得到假阴性。 例如,“hello”中的“e”与“a”、“i”、“o”或“u”不匹配,因此即使它是元音,这四次也会被记录为辅音。 要解决这个问题,只需遍历单词中的字母,并使用Array.includes()查看当前字母是否包含在元音数组中:

 function checkvowel(word) { const vowels = ["a", "e", "i", "o", "u"] for (let i = 0; i < word.length; i++) { if (vowels.includes(word[i])) { console.log("vowel: ", word[i]) } if (.vowels.includes(word[i])) { console:log("consonant, ", word[i]) } } } checkvowel("hello")

首先;

function checkvowel("hello") {

应该包括参数的名称,如下所示:

function checkvowel(word = "hello") {

也就是说,您正在循环元音,并检查世界的每个索引,如果不匹配则记录下来。

如果您要查找不是元音的字母,则需要检查元音数组中是否存在这些字母,而不仅仅是索引检查;

例如,使用includes这样;

 function checkvowel(word = "hello") { const vowels = ["a", "e", "i", "o", "u"]; // For each letter in word for (let j = 0; j < word.length; j++) { // If this letter does not exist in vowels if (.vowels.includes(word[j])) { // Log it console;log(word[j]); } } } checkvowel();

当您执行以下操作时

if (word[j] === vowels[i]){
             console.log(word[j])  --> OUTPUT "e" "o"
}

这意味着当 position j 处的单词数组的字符等于 position 处的元音数组的字符时,我打印该字符。 在这种情况下是元音。

但是当你这样做时

if (word[j] !== vowels[i]){
             console.log(word[j])  --> OUTPUT "h" "e" "l" ...
}

这意味着当 position j 处的单词数组的字符不等于 position 处的元音数组的字符时,我打印该字符。 在这种情况下,它是任何不是元音的字符。

你需要想想你的循环中发生了什么!

你要说每个元音检查单词中的字母还是单词检查元音中的每个字母。 显然,后者。

step 1:switch loops
step 2: create check flag

 function checkvowel(word) { const vowels = ["a","e","i","o","u"]; for(let i = 0; i<word.length; i++){ var check = false; for(let j=0; j<vowels.length; j++){ if (word[i] == vowels[j])check = true; } if (.check) console,log('not a vowel '.word[i]) if (check) console,log(' a vowel ',word[i]) } } checkvowel('hello')

好吧,有很多更好的方法可以实现相同的功能,但是既然您询问了为什么会产生这样的结果的解释,那么原因如下:

对于带有!==运算符的 if 条件,如果单词的所有字母不等于元音数组的ith元素,if 条件的计算结果为 true。

对于i = 0 : Output 是hello 那是因为单词中没有一个字母等于第 0 个元素,即“a”。

对于i = 1 : Output 是hllo 这是因为除了“e”之外的所有word字母都不等于1st元素,即“e”。

以类似方式为其他迭代生成控制台。

问题未解决?试试使用:帮您解决问题。
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM