首页 > 解决方案 > 为什么只执行“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
            }
        }
    }
}

谁能告诉我如何解决这个问题,为什么会这样?

标签: javascript

解决方案


内循环是一个for in循环。所以 key 将保持索引位置作为值,即key = [0,1]。因此,在您的 if 条件下,它被比较为'beautiful' == 0永远不会为真。所以 else 块每次都在执行。


解决方案: 为您的内部循环使用 for of 循环

for(let key of EnAdjectives)

推荐阅读