如何使用Javascript过滤掉数组中的特定单词

时间:2018-06-27 09:14:10

标签: javascript loops for-loop

好吧,我是Java语言的新手,我只是想弄清楚循环以及如何使用它们。所以我想出了一个练习:

  • 我将创建一个包含随机单词的数组,其中一些将是结果。
  • 我希望循环遍历数组(到目前为止)。
  • 接下来,我只想过滤出水果词(称为mangobanana等),我想用Fruit代替这些词

这是我当前的代码:

let words = ['mango','desk','phone','banana','airpods', 6 ,'mouse','strawberry',9,'raspberry', 10];

let wordsArrayLength = words.length;

for (let wordLoop = 0; wordLoop < wordsArrayLength; wordLoop++ ) {

}

所以我想我会做一个.filter()然后叫出那些名字,并用单词Fruit代替它们,但是我现在有点卡住了,我不知道该怎么去从这里开始...我在网上找不到任何可以帮助我解决这个问题的东西,所以也许我没有为自己做一个很好的锻炼?

如果有人对使用Javascript进行实践有什么建议,请告诉我。我正在考虑下一个谜题/测验。我只是想知道我现在想做的事情是否有解决方案,或者我只是继续前进。

3 个答案:

答案 0 :(得分:1)

您不想filter删除单词-您想要创建一个与原始数组一对一的数组,只替换了水果单词。请改用.map

您还可以将预定义的水果词放入Set中以降低运行时的复杂性:

const fruits = new Set(['mango', 'banana', 'strawberry', 'raspberry']);
const input = ['mango','desk','phone','banana','airpods', 6 ,'mouse','strawberry',9,'raspberry', 10];
const mapped = input.map(val => fruits.has(val) ? 'fruit' : val);
console.log(mapped);

或者,仅使用数组方法,您将进行测试以查看水果数组includes的值:

const fruits = ['mango', 'banana', 'strawberry', 'raspberry'];
const input = ['mango','desk','phone','banana','airpods', 6 ,'mouse','strawberry',9,'raspberry', 10];
const mapped = input.map(val => fruits.includes(val) ? 'fruit' : val);
console.log(mapped);

答案 1 :(得分:0)

您可以使用地图(https://www.w3schools.com/jsref/jsref_map.asp

所以map函数的作用是循环遍历数组中的每一项并将其传递给函数,以便您可以转换该值

答案 2 :(得分:0)

您可以创建一个名为fruits的新数组,该数组将包含所有水果项目。这样,您可以循环到words数组,并使用fruits.indexOf()检查项目是否为水果。如果只是将其替换为Fruit

let fruits = ['mango','banana','strawberry','raspberry'];
  let words = ['mango','desk','phone','banana','airpods', 6 ,'mouse','strawberry',9,'raspberry', 10];

words.forEach((word, index) => {
  if(fruits.indexOf(word) !== -1){
     words[index] = 'Fruit';
  }
});
console.log(words);