我如何用过滤器功能替换为以下内容以在JavaScript中循环

问题描述 投票:-2回答:2

如何用JavaScript中的.filter函数替换for循环。匹配的名称将显示在列表中。

let originalMoviesList = [ //Contains moviesname and url
        {
            name: "War Horse",
            url: "War_Horse.jpg",
            tag: "lepsum lepsum lepsum lepsum"
        },{
            name: "War Horse",
            url: "War_Horse.jpg",
            tag: "lepsum lepsum lepsum lepsum"
        }
    ]

    **let** matchedTerms = [];//`array for storing the matched terms`
    searchTerm = searchTerm.toLowerCase();
    for (let i = 0; i < originalMoviesList.length; i++) {
           if ((originalMoviesList[i].name).toLowerCase().indexOf(searchTerm) !== -1) {
                matchedTerms.push({//pushing into the array
                    name: originalMoviesList[i].name,//pushing name to the array of objects
                    url: originalMoviesList[i].url//pushing url to the array of objects
               });
           }
     }
javascript
2个回答
0
投票

您快到了。您只需要将条件放入过滤器函数中

let originalMoviesList = [ //Contains moviesname and url
            {
                name: "War Horse",
                url: "War_Horse.jpg",
                tag: "lepsum lepsum lepsum lepsum"
            }, {
                name: "Star Horse",
                url: "War_Horse.jpg",
                tag: "lepsum lepsum lepsum lepsum"
            }, {
                name: "War Horse",
                url: "War_Horse.jpg",
                tag: "lepsum lepsum lepsum lepsum"
            }
        ]

        searchTerm = "star"; //searchTerm.toLowerCase();
        let matchedTerms = originalMoviesList.filter(function(i) {
            return i.name.toLowerCase().indexOf(searchTerm) > -1;
        });

0
投票

该过滤器也可以用fat arrow兼容代码中的EcmaScript 6编写。

let originalMoviesList = [ 
    {
        name: "War Horse",
        url: "War_Horse.jpg",
        tag: "horse war"
    },
    {
        name: "War Dolphin",
        url: "War_Dolphin.jpg",
        tag: "dolphin war"
    }
];

let searchTerm = 'Horse';

let matchedTerms = originalMoviesList.filter( (movie) => movie.name
          .toLowerCase()
          .includes(searchTerm.toLowerCase()));

console.log(matchedTerms);
© www.soinside.com 2019 - 2024. All rights reserved.