【问题标题】:How can I correctly add an argument to a local function?如何正确地将参数添加到本地函数?
【发布时间】:2019-06-07 13:57:06
【问题描述】:

我正在尝试通过函数中的给定 ID 过滤数组,但我不知道如何将 ID 添加到过滤方法

function checkIdFilter(mediaObject, subCollectionId){
    //mediaObject is allMedia[index??]
    console.log("FILTERING ON " + subCollectionId);
    return mediaObject.id == subCollectionId//check if mediaObject has certain ID here;
}
function searchMediaByCollection(subCollectionId) {

    let filteredMedia = allMedia.filter(checkIdFilter);
    // let filteredMedia = allMedia.filter(checkIdFilter(this.mo??, subCollectionId));
}

如您所见,我不知道如何正确地将 Id 传递给 checkIdFilter 方法,因为它(我假设)在数组上不可见地迭代。

【问题讨论】:

    标签: javascript arrays filter


    【解决方案1】:

    filter 函数只接受一个参数:当前对象,因此您必须将函数包装在另一个函数中,并使用闭包到达 subCollectionId。

    function checkIdFilter(mediaObject, subCollectionId){
        //mediaObject is allMedia[index??]
        console.log("FILTERING ON " + subCollectionId);
        return mediaObject.id == subCollectionId//check if mediaObject has certain ID here;
    }
    function searchMediaByCollection(subCollectionId) {
        let filteredMedia = allMedia.filter(media => checkIdFilter(media, subCollectionId);
    }
    

    或

    function searchMediaByCollection(subCollectionId) {
        let filteredMedia = allMedia.filter(function(media) {
            return checkIdFilter(media, subCollectionId);
        });
    }
    

    如有需要,请随时询问详细信息;)

    【讨论】:

    • 谢谢,第一种方法效果很好!第二个还没试过。
    • @Sven0567 其实是一样的,箭头函数是最新的表示法,稍有不同,但真的,这里没关系。如果此答案适合您,请将其标记为已接受,以便对其他人有所帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多