如果这是重复的道歉,但我似乎无法找到解决方案。 我试图在数组中找到一个特定的字符串模式。 我想在包含'下划线r下划线'的数据中找到所有值。然后我想创建一个只包含那些键和值的新数组。
var data = ["something", "bar_r_something"];
var resultArray = new Array();
for (var i = 0; i < data.length; i++) {
var bar = /_r_/;
if ($.inArray(bar, data[i].length) > 0)
{
console.log("found _r_");
resultArray.push(data[i]);
}
};
我似乎无法让$ .inArray工作,似乎总是踢出-1。
答案 0 :(得分:4)
var data = ["something", "bar_r_something"];
var resultArray = new Array();
for (var i = 0; i < data.length; i++) {
var bar = /_r_/;
if (bar.test(data[i])) {
alert("found _r_");
resultArray.push(data[i]);
}
};
console.log(resultArray);
在这里,它不使用$.inArray
,而是使用Regex,希望它很酷!
修改
如果您想要更加花哨,可以使用JavaScript的过滤方法,如下所示:
var data = ["something", "bar_r_something"];
var resultArray = data.filter(function(d){
return /_r_/.test(d);
});
console.log(resultArray);
答案 1 :(得分:1)
我认为你要找的是$.grep()。同样$.inArray()不会针对正则表达式测试值,它会测试是否相等。
var regex = /_r_/
var resultArray = $.grep(data, function(item){
return regex.test(item)
})
演示:Fiddle