簡體   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-2025 STACKOOM.COM