Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I've gave my vote to Igor's answer, but, because I wanted to put a full example in jsfiddle, here you go: <a href="http://jsfiddle.net/jeffrenaud/JDYMt/" rel="nofollow">http://jsfiddle.net/jeffrenaud/JDYMt/</a></p> <p>I've added the possibility to have an 'Any' options, so that there's no filter on a particular element.</p> <p>Here's a summary:</p> <p>HTML:</p> <pre><code>&lt;label for="food"&gt;Food:&lt;/label&gt; &lt;select id="food"&gt; &lt;option value=""&gt;Any&lt;/option&gt; &lt;option value="burger"&gt;Burger&lt;/option&gt; &lt;option value="chicken"&gt;Chicken&lt;/option&gt; &lt;option value="pizza"&gt;Pizza&lt;/option&gt; &lt;/select&gt; &lt;label for="drink"&gt;Drink:&lt;/label&gt; &lt;select id="drink"&gt; &lt;option value=""&gt;Any&lt;/option&gt; &lt;option value="coke"&gt;Coke&lt;/option&gt; &lt;option value="pepsi"&gt;Pepsi&lt;/option&gt; &lt;option value="sprite"&gt;Sprite&lt;/option&gt; &lt;option value="root beer"&gt;Root beer&lt;/option&gt; &lt;option value="mist"&gt;Mist&lt;/option&gt; &lt;/select&gt; &lt;ul id="result"&gt;&lt;/ul&gt; </code></pre> <p>JavaScript: </p> <pre><code>var restaurants = [ { "restaurant": { "name": "McDonald's", "food": "burger", "drink": "coke", "content": "Lorem ipsum dolor sit amet" } }, { "restaurant": { "name": "KFC", "food": "chicken", "drink": "pepsi", "content": "Lorem ipsum dolor sit amet" } }, { "restaurant": { "name": "Pizza Hut", "food": "pizza", "drink": "sprite", "content": "Lorem ipsum dolor sit amet" } }, { "restaurant": { "name": "Dominos", "food": "pizza", "drink": "root beer", "content": "Lorem ipsum dolor sit amet" } }, { "restaurant": { "name": "Popeyes", "food": "chicken", "drink": "mist", "content": "Lorem ipsum dolor sit amet" } } ]; var $food = $('#food'), $drink = $('#drink'), $result = $('#result'); $food.change(function () { onChange(); }); $drink.change(function () { onChange(); }); function onChange() { var findedRestaurants = findRestaurants(); showRestaurants(findedRestaurants); } function findRestaurants() { return filter($food.find('option:selected').val(), $drink.find('option:selected').val()); } function filter(food, drink) { var result = []; for (var i = 0; i &lt; restaurants.length; i++) { var restaurant = restaurants[i].restaurant; if ((!food || restaurant.food === food) &amp;&amp; (!drink || restaurant.drink === drink)) { result.push(restaurant); } } return result; } function showRestaurants(restaurants) { $result.empty(); for (var i = 0; i &lt; restaurants.length; i++) { $result.append($('&lt;li&gt;' + restaurants[i].name + '&lt;/li&gt;')); } } onChange(); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload