如何用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
});
}
}
您快到了。您只需要将条件放入过滤器函数中
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;
});
该过滤器也可以用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);