首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JS中查找字符串中的关键字

在JS中查找字符串中的关键字
EN

Stack Overflow用户
提问于 2017-10-24 23:15:04
回答 5查看 5.3K关注 0票数 2

我有一个输入域,我希望用户键入的文本,其中包含许多关键字之一,将触发不同的音频文件取决于关键字。(我知道从UX的角度来看,这并不是很聪明,但这只是一个虚拟助手的样机/演示)。

我正在使用这个代码,但我觉得我可以做得更好,你能推荐一些替代方案吗?

代码语言:javascript
运行
复制
    keyword1 = "music";
    keyword2 = "news";
    keyword3 = "weather";
    keyword4 = "cooking";
    keyword5 = "pasta";
    keyword6 = "tech";

    if(text.search(keyword1)!=-1) {
      audio.src = a_music;
      audio.play();
    } else if(text.search(keyword2)!=-1){
      audio.src = a_news;
      audio.play();
    } 
   [...]
  }
EN

回答 5

Stack Overflow用户

发布于 2017-10-24 23:24:27

您可以创建一个关键字为key、文件url为value的对象,然后遍历关键字以检查文本是否与关键字匹配。

代码语言:javascript
运行
复制
const config = { 
  'music': 'musicUrl',
  'news': 'newsUrl',
  'weather': 'weatherUrl',
  'cooking': 'cookingUrl',
  'pasta': 'pastaUrl',
  'tech': 'techUrl'
};

function match(input, obj) {
  var matched = Object.keys(obj).find(key => input.toLowerCase().search(key) > -1);
  return obj[matched] || null;
}

console.log(match('cats weather dogs', config));
console.log(match('cats tech dogs', config));
console.log(match('cats dogs', config));

票数 5
EN

Stack Overflow用户

发布于 2017-10-24 23:20:40

您应该使用关键字数组,而不是每个单词一个不同的变量。那就是小菜一碟了:

代码语言:javascript
运行
复制
const keywords = ["music","news","weather","cooking","pasta","tech"]

const text = "let's play some music"

if( keywords.some(keyword => text.includes(keyword) )) {
    console.log("Found")
      // audio.src = a_music;
      // audio.play();
}

票数 2
EN

Stack Overflow用户

发布于 2017-10-24 23:21:45

也许是一个数组?

代码语言:javascript
运行
复制
var array = ["music", "news", "weather", "cooking", "pasta", "tech"];

for(var i = 0; i < array.length; i++){
    if(text.includes(array[i])){
    //do something with i
    break;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46914159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档