我正在嘗試遍歷一個陣列,如果有任何匹配的元素,它應該將 true 推送到一個新陣列,否則回傳 false。
const wordPerformance = []
const wordsReviewed = "candy, cattle, cat, call, cheat";
const wordsIncorrect = "candy, cattle, call, cheat";
wordsReviewed.split(/,\s?/).forEach((word) => {
if (wordsIncorrect.includes(word)) {
wordPerformance.push(false);
} else {
console.log(word) //unreachable, though 'cat' should be logged
wordPerformance.push(true);
}
});
console.log(wordPerformance);
按照這個邏輯,wordPerformance 應該回傳
[false, false, true, false, false]
然而,它正在回歸
[false, false, false, false, false]
也許有些東西我沒有看到?
uj5u.com熱心網友回復:
您必須首先以wordsIncorrect與使用相同的方式拆分字串,wordsReviewed以便它確實與專案進行比較,并且不包括末尾具有某些內容的字串,例如將“cat”與“cattle”匹配
這是固定示例
const wordPerformance = []
const wordsReviewed = "candy, cattle, cat, call, cheat";
const wordsIncorrect = "candy, cattle, call, cheat";
const wordsIncorrectSplitted = wordsIncorrect.split(/,\s?/);
wordsReviewed.split(/,\s?/).forEach((word) => {
if (wordsIncorrectSplitted.includes(word)) {
wordPerformance.push(false);
} else {
console.log(word) //unreachable, though 'cat' should be logged
wordPerformance.push(true);
}
});
console.log(wordPerformance);

uj5u.com熱心網友回復:
你也需要分開wordsIncorrect。if (wordsIncorrect.split(",").includes(word))
輸出:
cat
[ false, false, true, false, false ]
uj5u.com熱心網友回復:
您還忘記將不正確的單詞字串拆分為陣列。現在,您正在檢查字串是否包含單詞而不是陣列。因此,String.includes對整個字串而不是單個元素執行模式匹配。由于每個不正確的單詞都包含其中的模式cat,它會認為包含 cat 并回傳 false:
const wordPerformance = []
const wordsReviewed = "candy, cattle, cat, call, cheat";
const wordsIncorrect = "candy, cattle, call, cheat";
wordsReviewed.split(/,\s?/).forEach((word) => {
if (wordsIncorrect.split(/,\s?/).includes(word)) { //split incorrectWords
wordPerformance.push(false);
} else {
console.log(word) //unreachable, though 'cat' should be logged
wordPerformance.push(true);
}
});
console.log(wordPerformance);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/370109.html
標籤:javascript 数组 循环 if 语句 foreach
下一篇:迭代串列
