2015-10-26 52 views
-3

的陣列I有一個具有約1000的元件,例如一個數組:正則表達式通過對象

var peoples = [ 
    { "name": "bob", "dinner": "pizza" }, 
    { "name": "john", "dinner": "sushi" }, 
    { "name": "larry", "dinner": "hummus" }, 
    { "name": "jacob", "dinner": "pizza" } 
............]; 

我想要搜索的"dinner" s的正則表達式的陣列的元件,因此它不具有是確切的類型。例如,假設輸入是"piz";它應該以數組的形式返回所有匹配的元素。在上面的例子中,它應該返回:

var result = [{ "name": "bob", "dinner": "pizza" }, 
{ "name": "jacob", "dinner": "pizza" }] 

我知道如何使用JavaScript中的.match功能來搜索一個字符串,但我不知道如何在一個陣列中使用了類似的功能。我怎樣才能做到這一點?

+2

你應該知道,這不是多維數組。這是對象數組。只有可能的方法是循環編碼邏輯。希望這可以幫助。 –

+0

只是爲了清楚起見,它是「一個字符串」而不是「一串字符串」:P(除非你指的是字符串的一部分,在這種情況下,如果有點混淆並且你想要,那麼我認爲它幾乎是正確的「A一個字符串「) – DBS

+0

..是它搜索是一個」包含「模式,而不是格式模式?..如果答案是包含模式,則不要使用正則表達式。你如何嘗試第一次 – Dalorzo

回答

2

您可以使用.filterdynamic RegExp,這樣

var search = "piz"; 
 
var condition = new RegExp(search); 
 

 
var peoples = [ 
 
    { "name": "bob", "dinner": "pizza" }, 
 
    { "name": "john", "dinner": "sushi" }, 
 
    { "name": "larry", "dinner": "hummus" }, 
 
    { "name": "jacob", "dinner": "pizza" } 
 
]; 
 

 
var result = peoples.filter(function (el) { 
 
    return condition.test(el.dinner); 
 
}); 
 

 
console.log(result);