假设用户想要根据设置以下布尔值来查看音乐家列表:
在上述情况下,用户选择查看会说英语的音乐人,且这些音乐人要么是著名的,要么是地下歌手。
基于这些设置,我想过滤一个名为customArray的数组。
这是一个传递给applyFilters的“el”结构的示例:
所有音乐家都应该被列出。
english_filter = true; // ("EN")
spanish_filter = false; // ("ES")
underground_filter = true; // ("underground")
famous_filter = true; // ("famous")
在上述情况下,用户选择查看会说英语的音乐人,且这些音乐人要么是著名的,要么是地下歌手。
基于这些设置,我想过滤一个名为customArray的数组。
function applyFilters(el) {
return el.language === "EN" && (el.popularity === 'famous' || el.popularity === 'underground');
}
var filtered = customArray.filter(applyFilters);
这是一个传递给applyFilters的“el”结构的示例:
{
id: "sHYNYKFENX"
language: "EN"
name: "John Smith"
popularity: "famous"
profile_image:"https://google.com/fakeimage.jpeg"
recording_handle: "DvYenMhJ8Mo"
recording_title: "Awesome song"
}
上面的代码可以工作,但是我希望能够抽象化它,使用户可以选择任何想要的组合。我该如何创建一个函数来实现这个功能?
非常感谢
更新:
谢谢你们所有人的回答 - 我认为我们已经接近了解决方案。以下是一些预期结果:
var english_filter = false; // ("EN")
var spanish_filter = false; // ("ES")
var underground_filter = false; // ("underground")
var famous_filter = false; // ("famous")
所有音乐家都应该被列出。
var english_filter = false; // ("EN")
var spanish_filter = false; // ("ES")
var underground_filter = true; // ("underground")
var famous_filter = false; // ("famous")
只有地下音乐家,无论他们说什么语言。
如果可能的话,最好制定一种解决方案,可以接受您传递的任何语言,而不仅仅是英语和西班牙语。(不是必需的)。非常感谢大家。你们都很聪明。
filters
变量上的“language”属性即可。 - Marcos Dimitrio