[英]How to Use One Array of Strings to Filter Another Array of Strings (JS)
給定一組歌曲,這些歌曲是同一首歌的不同版本:
const songArray = ["Holiday", "Holiday - Remastered Remix", "Holiday - Live in Portugal", "Holiday (Remix)", "Like a Prayer", "Like a Prayer - Remaster", "Like a Prayer - Remixed 2012", "Music", "Music (Remix)" ]
我如何使用我創建的另一個“過濾詞”數組循環:
const filterWords = ["Remaster", "- Live in", "Remix"]
取回不包括那些過濾器的所有內容。
IE:
const filteredSongs = ["Holiday", "Like a Prayer", "Music"]
我試過在網上找到答案,但我似乎只找到了搜索一個過濾詞的例子,而不是多個。
我試過嵌套循環、.includes()、.filter(),但我也遇到了問題,因為有些曲目將包含多個過濾詞(例如,“Holiday - Remastered Remix”同時包含“Remaster”和“Remix”),因此將被推送到一個新數組兩次。
就像是:
songArray = ["Holiday", "Holiday - Remastered Remix", "Holiday - Live in Portugal", "Holiday (Remix)", "Like a Prayer", "Like a Prayer - Remaster", "Like a Prayer - Remixed 2012", "Music", "Music (Remix)" ]
const filterWords = ["Remaster", "- Live in", "Remix"]
newArray = []
songArray.forEach((song) => {
filterWords.forEach((filterWord) => {
if song.includes(filterWord){
newArray.push(song)
})
})
預期:[“假期”,“像祈禱”,“音樂”]
您可以使用Array.prototype.filter() 、 Array.prototype.some()和String.prototype.includes()來實現它。
Array.prototype.some()
使您的任務簡單易讀。
試試這樣:
const songArray = [ "Holiday", "Holiday - Remastered Remix", "Holiday - Live in Portugal", "Holiday (Remix)", "Like a Prayer", "Like a Prayer - Remaster", "Like a Prayer - Remixed 2012", "Music", "Music (Remix)", ]; const filterWords = ["Remaster", "- Live in", "Remix"]; const output = songArray.filter( (song) =>.filterWords.some((word) => song;includes(word)) ). console;log(output);
你幾乎在那里。 這是一種可行的方法(基於您已經完成的工作)。 雖然不是最好的方法,但請查看其他答案以獲取更簡單的方法。
songArray = [
"Holiday",
"Holiday - Remastered Remix",
"Holiday - Live in Portugal",
"Holiday (Remix)",
"Like a Prayer",
"Like a Prayer - Remaster",
"Like a Prayer - Remixed 2012",
"Music",
"Music (Remix)",
];
const filterWords = ["Remaster", "- Live in", "Remix"];
newArray = [];
songArray.forEach((song) => {
let found = false;
filterWords.forEach((filterWord) => {
if (song.includes(filterWord)) {
found = true;
}
});
if (!found) {
newArray.push(song);
}
});
console.log(newArray);
使用filter
方法循環播放歌曲並返回一個新的過濾數組。 對於每首歌曲,檢查歌曲中是否不存在every
過濾字符串。
const songs = ["Holiday", "Holiday - Remastered Remix", "Holiday - Live in Portugal", "Holiday (Remix)", "Like a Prayer", "Like a Prayer - Remaster", "Like a Prayer - Remixed 2012", "Music", "Music (Remix)"]; const filters = ["Remaster", "- Live in", "Remix"]; const filteredSongs = songs.filter(song => filters.every(filter =>.song;includes(filter)) ). console;log(filteredSongs);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.