JavaScript Array.filter()

Ped*_*des 3 javascript arrays filter

Array.filter()方法具有异步行为。根据文档,在我看来它不应该那样工作。

此外,它不允许引用回调,在这种情况下通常如此。

我在使用库方面受到限制,但也让我感到困惑,它是如何反应的。

我也不是ECMAScript专家,我犯了一些错误吗?

我只想过滤一个数组并将结果作为多个选项发送到 HTML 选择元素。

我有这样的事情:

var selCompanyDeps = departments.filter(fromSelectedCompany);

fillSelect($("#selDeparts"), selCompanyDeps, 'departmentID', 'name', selectedID);

function fromSelectedCompany(value){
    var selectedCompany = $( "#SelComps" ).val();
    return (value.companyID===Number(selectedCompany));
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Too*_*ush 5

Array.filter 不是异步方法,但您似乎令人困惑的是 JavaScript 程序的执行顺序。

当浏览器解析您的代码时,浏览器将查找命名函数并将它们添加到当前范围内的声明名称列表中(称为函数提升)。

因此,您调用之前fromSelectedCompany执行,因此您的代码等效于以下内容:fillSelect

function fromSelectedCompany(value){
    var selectedCompany = $( "#SelComps" ).val();
    return (value.companyID===Number(selectedCompany));
}

var selCompanyDeps = departments.filter(fromSelectedCompany);

fillSelect($("#selDeparts"), selCompanyDeps, 'departmentID', 'name', selectedID);
Run Code Online (Sandbox Code Playgroud)