2013-11-04 45 views
0

道歉,如果這是重複的,但我似乎無法找到解決方案。 我想在數組中找到特定的字符串模式。 我想查找包含'underscore r underscore'的數據中的所有值。然後我想創建一個只包含這些鍵和值的新數組。在數組中查找特定的字符串模式jquery

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

的可能重複的[使用Javascript - 搜索字符串字符串數組內(http://stackoverflow.com/questions/5424488/javascript-search-for-a-字符串內部的字符串) – JJJ

回答

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,但正則表達式來代替,希望這很酷!

編輯

如果你想要去多一點花哨,你可以使用JavaScript的濾波方法,象這樣:

var data = ["something", "bar_r_something"]; 
var resultArray = data.filter(function(d){ 
    return /_r_/.test(d); 
}); 

console.log(resultArray); 
+0

不錯!我不知道JS測試方法,謝謝 – Bwyss

1

我想你在找什麼是$.grep()。此外,$.inArray()不針對正則表達式測試值,它會測試是否相等。

var regex = /_r_/ 
var resultArray = $.grep(data, function(item){ 
    return regex.test(item) 
}) 

演示:Fiddle

相關問題