Es gibt ein Spieleverzeichnis mit Spielelisten, die durch mehrere Filter geleitet werden.
Spiele werden nach Plattform unterteilt (HTC, PSVR, PS5, Favoriten). , Checkbox „Geeignet für Kinder“ (isChild), Checkbox „Geeignet für zwei“ (isLocalMultiplayer) und Suche nach Spielen nach Name/Tag/Genre (Abfrage). Alle Parameter sind beliebig kombinierbar.
Vollständigen PS5Games-Code anzeigen:
showPS5Games: state => ( query, genre, isChild, isLocalMultiplayer, selectedSort ) => { if (genre == "все" && isChild && isLocalMultiplayer) { var tmpArray = state.games.filter(game => { return ( (game.category == "ps5" && isChild && game.isLocalMultiplayer && game.title.toLowerCase().includes(query)) || (game.category == "ps5" && isChild && game.isLocalMultiplayer && game.genre.includes(query)) || (game.category == "ps5" && isChild && game.isLocalMultiplayer && game.tag.includes(query)) ); }); } else if (isChild && isLocalMultiplayer) { var tmpArray = state.games.filter(game => { return ( (game.category === "ps5" && isChild && game.isLocalMultiplayer && game.genre === genre && game.title.toLowerCase().includes(query)) || (game.category === "ps5" && isChild && game.isLocalMultiplayer && game.genre === genre && game.genre.includes(query)) || (game.category === "ps5" && isChild && game.isLocalMultiplayer && game.genre === genre && game.tag.includes(query)) ); }); } else if (genre === "все" && isChild) { var tmpArray = state.games.filter(game => { return ( (game.category === "ps5" && game.isChild && game.title.toLowerCase().includes(query)) || (game.category === "ps5" && game.isChild && game.genre.includes(query)) || (game.category === "ps5" && game.isChild && game.tag.includes(query)) ); }); } else if (isChild) { var tmpArray = state.games.filter(game => { return ( (game.category === "ps5" && game.isChild && game.genre === genre && game.title.toLowerCase().includes(query)) || (game.category === "ps5" && game.isChild && game.genre === genre && game.genre.includes(query)) || (game.category === "ps5" && game.isChild && game.genre === genre && game.tag.includes(query)) ); }); } else if (genre === "все" && isLocalMultiplayer) { var tmpArray = state.games.filter(game => { return ( (game.category === "ps5" && game.isLocalMultiplayer && game.title.toLowerCase().includes(query)) || (game.category === "ps5" && game.isLocalMultiplayer && game.genre.includes(query)) || (game.category === "ps5" && game.isLocalMultiplayer && game.tag.includes(query)) ); }); } else if (isLocalMultiplayer) { var tmpArray = state.games.filter(game => { return ( (game.category === "ps5" && game.isLocalMultiplayer && game.genre === genre && game.title.toLowerCase().includes(query)) || (game.category === "ps5" && game.isLocalMultiplayer && game.genre === genre && game.genre.includes(query)) || (game.category === "ps5" && game.isLocalMultiplayer && game.genre === genre && game.tag.includes(query)) ); }); } else if (genre === "все") { var tmpArray = state.games.filter(game => { return ( (game.category === "ps5" && game.title.toLowerCase().includes(query)) || (game.category === "ps5" && game.genre.includes(query)) || (game.category === "ps5" && game.tag.includes(query)) ); }); } else { var tmpArray = state.games.filter(game => { return ( (game.category === "ps5" && game.genre === genre && game.title.toLowerCase().includes(query)) || (game.category === "ps5" && game.genre === genre && game.genre.includes(query)) || (game.category === "ps5" && game.genre === genre && game.tag.includes(query)) ); }); } var filteredGames = []; if (selectedSort == "ascending") { filteredGames = tmpArray.sort((a, b) => a.title.localeCompare(b.title)); } else if (selectedSort == "descending") { filteredGames = tmpArray.sort((a, b) => b.title.localeCompare(a.title)); } else if (selectedSort == "bygenre") { filteredGames = tmpArray.sort((a, b) => a.genre.localeCompare(b.genre)); } else if (selectedSort == "bytag") { filteredGames = tmpArray.sort((a, b) => a.tag.localeCompare(b.tag)); } else { filteredGames = tmpArray; } return filteredGames; }
Ich habe eine Verzweigungsfunktion mit vielen Wenns für jede mögliche Kombination geschrieben, die nicht optimiert und nicht schön war. Außerdem funktioniert das Filtern des Arrays nach zwei ausgewählten Kontrollkästchen aus irgendeinem Grund nicht, sondern nur eines funktioniert einwandfrei. Wie kann man es am besten umschreiben?
这里有很多重复的逻辑。提高效率的第一步是清理 if 语句。例如你有:
其中一些条件可以使用嵌套 if 检查一次:
此外,出于同样的原因,还可以简化退货。例如这个返回
可以简化为:
我希望这能帮助您弄清楚您在这里遇到的其他问题,祝您好运!