按内容过滤数组?

时间:2018-07-15 10:06:35

标签: javascript jquery arrays filter filtering

我正在尝试过滤不基于对象的数组,并且我需要过滤器来简单地检查数组的每个部分以查找特定的字符串。

说我有这个数组:

cmd.exe

我需要做的是以某种方式收集数组,以便获得一个仅包含以["http://mywebsite.com/search", "http://mywebsite.com/search", "http://yourwebsite.com/search"] 而不是http://mywebsite.com开头的数组的新数组

最后得出的结论是:http://yourwebsite.com

进入此["http://mywebsite.com/search", "http://mywebsite.com/search", "http://yourwebsite.com/search"]

2 个答案:

答案 0 :(得分:1)

您可以使用String的.filter().startsWith()方法过滤数组。

根据文档:

  

startsWith()方法确定字符串是否以指定字符串的字符开头,并根据需要返回true或false。

演示:

let data = ["http://mywebsite.com/search",
            "http://mywebsite.com/search",
            "http://yourwebsite.com/search"];

let result = data.filter(s => s.startsWith('http://mywebsite.com/'));

console.log(result);

如您的评论中所述;如果要检查多个字符串,则可以尝试以下操作:

let data = ["http://mywebsite.com/search",
            "http://mywebsite.com/find",
            "http://yourwebsite.com/search",
            "http://yourwebsite.com/find"];

let strToMatch = ["http://mywebsite.com/search", "http://mywebsite.com/find"];

let result = data.filter(s1 => strToMatch.some(s2 => s2.startsWith(s1)));

console.log(result);

文档:

答案 1 :(得分:0)

使用数组filter()方法 您可以创建一个简单的函数,并传递该字符串数组,并检查其中是否存在

var yourString = ["http://mywebsite.com/search", "http://mywebsite.com/search", "http://yourwebsite.com/search"];

function specificString(yourString ) {
    return yourString === "http://mywebsite.com/search";
}
console.log(specificString(yourString));