Как правильно добавить аргумент в локальную функцию? - PullRequest
3 голосов
/ 07 июня 2019

Я пытаюсь отфильтровать массив по заданному идентификатору в функции, но я не знаю, как добавить идентификатор в метод фильтра.

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, так как он (я полагаю) невидимо перебирает массив.

1 Ответ

4 голосов
/ 07 июня 2019
Функция

A 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);
    });
}

Не стесняйтесь спрашивать детали, если это необходимо;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...