2016-10-07 8 views
1

に文字列を渡します。は、次の点を考慮して、正規表現

function filterFoods() { 
    var foods = [ 
     {food: 'Bacon'}, {food: 'Butter'}, {food: 'Chicken'}, {food: 'Cocoa butter'}, 
     {food: 'Saussages'}, {food: 'Ham'}, {food: 'Duck'}, {food: 'Salmon'}, 
     {food: 'Fish'}, {food: 'Lamb'}, {food: 'Fries'}, {food: 'Tomatoes'}, 
     {food: 'Chicken'}, {food: 'Carrot'}, {food: 'Egg'}, {food: 'Avocado'}, 
     {food: 'Duck'}, {food: 'Hello'}, {food: 'Cheese'}, {food: 'Carrot'}, 
     {food: 'Potato'}, {food: 'Sweet Potato'}, {food: 'Pineapple'}, {food: 'Peanut'}, 
    ] 
    return foods.filter(function(food) { 
    return (/po/gi).test(food.food); 
    }); 
} 

console.log(
    filterFoods() 
) 

http://jsbin.com/gudekaruha/edit?js,console,output

私は私が欲しいものである、バック[{food: 'Potato'},{food: 'Sweet Potato'}]を取得しています。

は、しかし、私はfilterFoods関数に何かを渡すことができるようにしたい、その後、正規表現に、種類のこのような:

function filterFoods(query) { 
    var foods = [ 
     {food: 'Bacon'}, {food: 'Butter'}, {food: 'Chicken'}, {food: 'Cocoa butter'}, 
     {food: 'Saussages'}, {food: 'Ham'}, {food: 'Duck'}, {food: 'Salmon'}, 
     {food: 'Fish'}, {food: 'Lamb'}, {food: 'Fries'}, {food: 'Tomatoes'}, 
     {food: 'Chicken'}, {food: 'Carrot'}, {food: 'Egg'}, {food: 'Avocado'}, 
     {food: 'Duck'}, {food: 'Hello'}, {food: 'Cheese'}, {food: 'Carrot'}, 
     {food: 'Potato'}, {food: 'Sweet Potato'}, {food: 'Pineapple'}, {food: 'Peanut'}, 
    ] 
    return foods.filter(function(food) { 
    return (/query/gi).test(food.food); 
    }); 
} 

console.log(
filterFoods('po') 
) 

しかし、私は空の配列を返す取得しています。今私が間違っている場合は私を修正するが、私は文字列としてそれを渡しているので、私はこれをどのように達成するのだろうと思う?あなたはRegExp()オブジェクトを使用する必要があり、事前

+1

'new RegExp(query、" gi ")' – Xufox

答えて

1

感謝。

return (new RegExp(query, 'gi')).test(food.food); 
関連する問題