2017-07-18 166 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);