[英]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.