为什么只执行“ else”语句?

时间:2020-05-02 07:53:08

标签: javascript

在这段代码中,我创建了对象,其中包含形容词或不同性别的名词。我还键入了“美丽的格言” ,尽管EnAdjectives具有“美丽的” “ 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
            }
        }
    }
}

有人可以告诉我如何解决该问题,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

内部循环是for in循环。因此,键将保留索引位置作为值,即key = [0,1]。因此,在您的if条件中,它将与'beautiful' == 0进行比较,这将永远是不正确的。因此else块每次都会执行。


解决方案: 将for循环用于您的内部循环,

for(let key of EnAdjectives)