javascript - 为什么只执行“else”语句?
问题描述
在这段代码中,我创建了包含不同性别的形容词或名词的对象。我还输入了"beautiful maxim",尽管 EnAdjectives 有"beautiful"并且"maxim"属于 " EnMaleNouns",但else
语句仍然执行。
let EnMaleNouns = {...};
let EnAdjectives = {...};
function conj() {
let sentence = document.getElementById("input_one").value.split(" ").filter(item => item != "")
let final = [];
for (let word in sentence) {
for (let key in EnAdjectives) {
if (sentence[word] == key && sentence[++word] in EnMaleNouns) {
//do something
} else {
//do something
}
}
}
}
谁能告诉我如何解决这个问题,为什么会这样?
解决方案
内循环是一个for in
循环。所以 key 将保持索引位置作为值,即key = [0,1]
。因此,在您的 if 条件下,它被比较为'beautiful' == 0
永远不会为真。所以 else 块每次都在执行。
解决方案: 为您的内部循环使用 for of 循环
for(let key of EnAdjectives)
推荐阅读
- html - 如何获取html中生成的多个选择标签的ngValue
- dynamic - Pywasm 运行时错误
- ruby-on-rails - 在 Rails 上的“每个”红宝石中显示其他数据
- mysql - 在 mysql 中查找多个分组的第二高值
- powershell - PowerShell 从文本文件中提取值并导出到 csv
- wordpress - 每 10 分钟更新一次用户元数据
- makefile - 为生成的目标设置不同的变量值
- java - 在数组中查找 3 个连续重复的字符?
- php - 如何在 localhost(xampp) 上运行 laravel 和 reactjs 应用程序
- sql - 具有所有字段名称和名称不存在的空值的 UNION