Javascript在一个字符串中获取多个子字符串

时间:2017-04-03 17:54:23

标签: javascript arrays ecmascript-6 substring

如何在字符串中多次出现单词。我尝试了多种功能但没有成功。我知道我可以使用some()方法获得第一个真值,如下所示。

       var keyword_array = ["Trap","Samples","WAV","MIDI","Loops"];
        function validateContentKeywords(content,keyword){
                keyword.some(function(currentValue,index){

                     console.log(currentValue + " ");

                     return content.indexOf(currentValue) >= 0;         
                });          
        }
     // Outputs --> Trap Samples
       if(validateContentKeywords("Beat Loops WAV Trap Samples Dog Cat MIDI",keyword_array)){
                console.log("Matches");     
        }
    // What I Want is --> Trap,Samples,MIDI,Loops

上述函数仅输出2次出现,我希望它同时输出所有匹配值,例如 - >陷阱,样品,MIDI,循环。 有没有办法同时在字符串中多次出现单词?

更新::帮助我的解决方案在

之下
           function Matches(value){
                return "Beat Loops WAV Trap Samples Dog Cat MIDI".indexOf(value) !== -1;
           }
           var keyword_array = ["Trap","Samples","WAV","MIDI","Loops"].filter(Matches);
            document.write(keyword_array);

3 个答案:

答案 0 :(得分:2)

您似乎正在寻找返回匹配元素数组的filter Array method,而不是某些匹配的布尔值。

答案 1 :(得分:2)

var keyword_array = ["Trap", "Samples", "WAV", "MIDI", "Loops"];

function validateContentKeywords(content, keyword) {
  var words = content.split(' '); //split the given string
  for (var i = 0; i < words.length; i++) {
    if (keyword.indexOf(words[i]) > -1) { //check if actually iterated word from string is in the provided keyword array
      document.write(words[i] + " "); //if it is, write it to the document
    };
  }
}

validateContentKeywords("Beat Loops WAV Trap Samples Dog Cat MIDI", keyword_array);

答案 2 :(得分:0)

最简单的方法是:

keyword_array.filter(keyword => searchString.includes(keyword));

您可以详细了解filter here。我强烈建议您了解如何使用mapreducefilter。他们是你最好的朋友。