2017-07-18 212 views
0

我想迭代一個數組以濾除某些我不想在新數組中的單詞。.filter遍歷一個數組

我可以做一個for循環,但我學習並嘗試使用迭代器。

我的代碼如下:

let story = 'Last weekend, I took literally the most beautiful bike ride of my life. The route is called "The 9W to Nyack" and it actually stretches all the way from Riverside Park in Manhattan to South Nyack, New Jersey. It\'s really an adventure from beginning to end! It is a 48 mile loop and it basically took me an entire day. I stopped at Riverbank State Park to take some extremely artsy photos. It was a short stop, though, because I had a really long way left to go. After a quick photo op at the very popular Little Red Lighthouse, I began my trek across the George Washington Bridge into New Jersey. The GW is actually very long - 4,760 feet! I was already very tired by the time I got to the other side. An hour later, I reached Greenbrook Nature Sanctuary, an extremely beautiful park along the coast of the Hudson. Something that was very surprising to me was that near the end of the route you actually cross back into New York! At this point, you are very close to the end.'; 

let unnecessaryWords = ['extremely', 'literally', 'actually' ]; 

let storyWords = story.split(' '); 

let betterWords = storyWords.filter(function(words) { 
    return words !== unnecessaryWords[0]; 
}); 

console.log(betterWords.join(' ')); 

我試圖採取unnecessaryWords出storyWords(故事)陣列。就像現在它會在不必要的話中拿出第一個元素,但是我不能完成這三個。謝謝您的幫助!

回答

2

您可以使用includes檢查是否存在元素陣列中或沒有。 Array includes方法確定數組是否包含某個元素,並根據需要返回true或false。

請注意,這是一個ES6功能。所以,請檢查瀏覽器兼容性或使用polyfill。

unnecessaryWords.includes(words);

完整代碼:

let story = 'Last weekend, I took literally the most beautiful bike ride of my life. The route is called "The 9W to Nyack" and it actually stretches all the way from Riverside Park in Manhattan to South Nyack, New Jersey. It\'s really an adventure from beginning to end! It is a 48 mile loop and it basically took me an entire day. I stopped at Riverbank State Park to take some extremely artsy photos. It was a short stop, though, because I had a really long way left to go. After a quick photo op at the very popular Little Red Lighthouse, I began my trek across the George Washington Bridge into New Jersey. The GW is actually very long - 4,760 feet! I was already very tired by the time I got to the other side. An hour later, I reached Greenbrook Nature Sanctuary, an extremely beautiful park along the coast of the Hudson. Something that was very surprising to me was that near the end of the route you actually cross back into New York! At this point, you are very close to the end.'; 
 

 
let unnecessaryWords = ['extremely', 'literally', 'actually' ]; 
 

 
let storyWords = story.split(' '); 
 

 
let betterWords = storyWords.filter(function(words) { 
 
    return !unnecessaryWords.includes(words); 
 
}); 
 

 
console.log(betterWords.join(' '));

+0

注意'include()'沒有全面的瀏覽器支持,如果使用客戶端 – charlietfl

+0

@charlietfl - 謝謝,我在答案中添加了信息。 – Agalo

2

你可以在這裏使用indexOf(),使用indexOf檢查這個單詞是否在不必要的words數組中,並將其過濾掉。

let story = 'Last weekend, I took literally the most beautiful bike ride of my life. The route is called "The 9W to Nyack" and it actually stretches all the way from Riverside Park in Manhattan to South Nyack, New Jersey. It\'s really an adventure from beginning to end! It is a 48 mile loop and it basically took me an entire day. I stopped at Riverbank State Park to take some extremely artsy photos. It was a short stop, though, because I had a really long way left to go. After a quick photo op at the very popular Little Red Lighthouse, I began my trek across the George Washington Bridge into New Jersey. The GW is actually very long - 4,760 feet! I was already very tired by the time I got to the other side. An hour later, I reached Greenbrook Nature Sanctuary, an extremely beautiful park along the coast of the Hudson. Something that was very surprising to me was that near the end of the route you actually cross back into New York! At this point, you are very close to the end.'; 
 

 
let unnecessaryWords = ['extremely', 'literally', 'actually' ]; 
 

 
let storyWords = story.split(' '); 
 

 
let betterWords = storyWords.filter(function(words) { 
 
    return unnecessaryWords.indexOf(words) < 0; 
 
}); 
 

 
console.log(betterWords.join(' '));

+3

'unnecessaryWords.indexOf(字)> = 0'已經是一個布爾......沒有必要三元 – charlietfl

+0

@charlietfl哦!是的,感謝那 – Dij

0
var filtered = storyWords.filter(function(e) { 
    return this.indexOf(e) < 0; 
}, unnecessarywords);