我正在尝试过滤不基于对象的数组,并且我需要过滤器来简单地检查数组的每个部分以查找特定的字符串。
说我有这个数组:
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"]
答案 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));