javascript - 如何使用 Javascript 过滤掉数组中的特定单词
问题描述
好的,我是 Javascript 的新手,我只是想了解循环的窍门以及如何使用它们。所以我想出了一个练习:
- 我将创建一个包含随机单词的数组,其中一些是水果。
- 我希望循环通过数组(我走了这么远)。
- 接下来我想只过滤掉水果词,(被称为
mango
等banana
),我想用这个词替换这些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 练习什么有任何提示,请告诉我。我想接下来做一个谜题/测验。我只是想知道我现在尝试做的事情是否有解决方案,或者我是否继续前进。
解决方案
您不想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);
推荐阅读
- javascript - 如何动态更新 ReactJS 中的组件
- firebase - 调用 Firebase.initializeApp() 不监听,仍然抛出错误“No Core default app found....Call Firebase.initializeApp()”
- azure-iot-edge - 我们是否必须重新启动 iotedge 才能更新 edgeHub 服务器证书?
- apache - 无法从不同的网络访问指向 Apache2 服务器的域
- django - “ID为“601664bd3c7d8d38768c43b9”的学校不存在。也许它被删除了?使用 mongorestore 迁移时出错
- php - Laravel AJAX 中的自动填充功能不会出现或自动填充其他输入
- android - 尝试通过flutter run运行android应用程序时出错
- javascript - 转换数据格式(2021 年 2 月 1 日 10:53:00am KST => 2021-02-01 10:53:00am)
- spring - 在两个@StreamListener 中并发消费一条指定消息
- javascript - ComponentFactoryResolver 在角度 11 中传递组件的动态类型 T