Javascript .filter和.includes是否使用数组筛选数组?
我对javascript还很陌生,正在学习一门课程以获得一些经验,但有时我会对返回的概念大发雷霆。基本上这就是我一直在做的任务: 有一系列不必要的词。迭代数组以过滤掉这些单词。将剩余的单词保存在一个名为betterWords的数组中。有几种方法可以实现这一点 我尝试了很多不同的东西。。。但是我不能让它工作 代码:Javascript .filter和.includes是否使用数组筛选数组?,javascript,arrays,filter,Javascript,Arrays,Filter,我对javascript还很陌生,正在学习一门课程以获得一些经验,但有时我会对返回的概念大发雷霆。基本上这就是我一直在做的任务: 有一系列不必要的词。迭代数组以过滤掉这些单词。将剩余的单词保存在一个名为betterWords的数组中。有几种方法可以实现这一点 我尝试了很多不同的东西。。。但是我不能让它工作 代码: let story='上周末,我骑了一生中最漂亮的自行车。这条路线被称为“9W到尼亚克”,实际上它从曼哈顿的河边公园一直延伸到新泽西州的南尼亚克。这真是一次从头到尾的冒险!这是一个4
let story='上周末,我骑了一生中最漂亮的自行车。这条路线被称为“9W到尼亚克”,实际上它从曼哈顿的河边公园一直延伸到新泽西州的南尼亚克。这真是一次从头到尾的冒险!这是一个48英里的环路,基本上花了我一整天的时间。我在河岸州立公园停下来,拍了一些非常艺术的照片。不过,这是一次短暂的停留,因为我还有很长的路要走。在非常受欢迎的小红灯塔拍照后,我开始徒步穿越乔治华盛顿大桥进入新泽西州。GW实际上很长——4760英尺!到了对岸时,我已经很累了。一小时后,我到达格林布鲁克自然保护区,这是一个沿着哈德逊海岸非常美丽的公园。令我非常惊讶的是,在接近路线终点时,你竟然穿越回了纽约!在这一点上,你已经非常接近尾声了。”;
让过度使用的单词=[“真的”、“非常”、“基本上”];
让不必要的词=[“极端”,“字面上”,“实际上];
让storyWords=story.split(“”);
console.log(storyWords.length);
让betterWords=storyWords.filter(函数(单词){
if(story.includes(不必要的单词)==false){
返回单词;
}
});
控制台日志(betterWords)
函数要求您在回调中返回true
或false
。
要检查数组中是否存在项,请使用indexOf
。
除非计划重新分配变量,否则不需要使用let
结果:
let story='上周末,我骑了一生中最漂亮的自行车。这条路线被称为“9W到尼亚克”,实际上它从曼哈顿的河边公园一直延伸到新泽西州的南尼亚克。这真是一次从头到尾的冒险!这是一个48英里的环路,基本上花了我一整天的时间。我在河岸州立公园停下来,拍了一些非常艺术的照片。不过,这是一次短暂的停留,因为我还有很长的路要走。在非常受欢迎的小红灯塔拍照后,我开始徒步穿越乔治华盛顿大桥进入新泽西州。GW实际上很长——4760英尺!到了对岸时,我已经很累了。一小时后,我到达格林布鲁克自然保护区,这是一个沿着哈德逊海岸非常美丽的公园。令我非常惊讶的是,在接近路线终点时,你竟然穿越回了纽约!在这一点上,你已经非常接近尾声了。”;
const overusedWords=[“真的”、“非常”、“基本上”];
const unnecessaryWords=[“极端”、“字面上”、“实际上”];
const-storyWords=story.split(“”);
console.log(storyWords.length);
const betterWords=storyWords.filter(函数(word)){
返回不必要的单词。indexOf(word)<0;
});
控制台日志(betterWords)
您应该检查数组中是否包含当前单词不必要的单词
:
let betterWords = storyWords.filter(function(currentWord) {
return !unnecessaryWords.includes(currentWord);
});
filter
将循环数组storyWords
,并且对于该数组的每个单词currentWord
,它将调用一个函数,如果该函数返回true
,则currentWord
将包含在结果数组中,否则它不会。现在,对于每个currentWord
,我们要检查不必要的单词是否包含它,如果包含它,我们将返回false
,如果不包含,我们将返回true
。操作员
用于反转布尔值(如果包含返回真
我们想返回假
,如果它返回假
我们想返回真
,所以我们只需使用!
反转包含的结果并返回).您可以完成以下操作,这些操作一眼就能轻松阅读和理解。另一个好处是,如果不必要的单词实际上不是动态的,那么不必要的单词的长度很明显,如果将来在查看/编辑/等代码时,这可能会很有用
let betterWords = storyWords.filter( (v) =>
(
v !== unnecessaryWords[0] &&
v !== unnecessaryWords[1] &&
v !== unnecessaryWords[2]
)
)
或者如果不必要的单词数组是动态的
let betterWords = storyWords.filter( (v) =>
return !unnecessaryWords.includes(v)
)
在本练习中,建议使用.filter()
和.includes()
方法,重要的是说“不包括”(注意!
符号)
然后,您可以打印结果以查看其工作情况:
console.log(betterWords.join(' '));
你不应该称javascript为“java”,因为java是一种完全不同的编程语言…:/您需要在代码中清楚地指出哪个数组是带有function(word){return!不必要的words.includes(word);}
如果你想只包含不必要的单词在你的数组中迭代哪个数组?我正要写同样的东西:为什么要用那种方式检查不必要的单词的每个元素?你可以使用故事词。过滤器((v)=>不必要的单词。indexOf(v)=-1)
@klugojo<0的作用是什么?IndexOf不是布尔值吗?IndexOf
是一个整数,表示数组中元素的索引。如果未找到元素,则等于-1
。结论,不必要的单词。单词索引<0
表示不必要的单词中不存在单词
console.log(betterWords.join(' '));