Javascript .filter和.includes是否使用数组筛选数组?

Javascript .filter和.includes是否使用数组筛选数组?,javascript,arrays,filter,Javascript,Arrays,Filter,我对javascript还很陌生,正在学习一门课程以获得一些经验,但有时我会对返回的概念大发雷霆。基本上这就是我一直在做的任务: 有一系列不必要的词。迭代数组以过滤掉这些单词。将剩余的单词保存在一个名为betterWords的数组中。有几种方法可以实现这一点 我尝试了很多不同的东西。。。但是我不能让它工作 代码: let story='上周末,我骑了一生中最漂亮的自行车。这条路线被称为“9W到尼亚克”,实际上它从曼哈顿的河边公园一直延伸到新泽西州的南尼亚克。这真是一次从头到尾的冒险!这是一个4

我对javascript还很陌生,正在学习一门课程以获得一些经验,但有时我会对返回的概念大发雷霆。基本上这就是我一直在做的任务:

有一系列不必要的词。迭代数组以过滤掉这些单词。将剩余的单词保存在一个名为betterWords的数组中。有几种方法可以实现这一点

我尝试了很多不同的东西。。。但是我不能让它工作

代码:

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(' '));