Defiant Example

by Hakan Bilgin

HTML

<script src="http://defiantjs.com/defiant.js/dist/defiant-latest.min.js?upd"></script>
<h2 id="name"></h2>
Max age: <span id="max_age"></span><br/>
Price: <span id="price"></span>

JavaScript

var data = {
      "SkiPass": [
         {
            "Id": 1,
            "Area": "Chamonix",
            "Rates": [
               { "Id": 1,  "AgeMin": 0,  "AgeMax": 2,  "Price": 2.5 },
               { "Id": 2,  "AgeMin": 3,  "AgeMax": 17, "Price": 5   },
               { "Id": 3,  "AgeMin": 18, "AgeMax": 30, "Price": 6.2 },
               { "Id": 4,  "AgeMin": 31, "AgeMax": 59, "Price": 7.4 }
            ]
         },
         {
            "Id": 2,
            "Area": "Megeve",
            "Rates": [
               { "Id": 1,  "AgeMin": 0,  "AgeMax":  2, "Price": 1   },
               { "Id": 2,  "AgeMin": 3,  "AgeMax": 17, "Price": 2   },
               { "Id": 3,  "AgeMin": 18, "AgeMax": 30, "Price": 2.2 },
               { "Id": 4,  "AgeMin": 31, "AgeMax": 59, "Price": 4.4 }
            ]
         },
         {
            "Id": 3,
            "Area": "Verbier",
            "Rates": [
               { "Id": 1,  "AgeMin": 0,  "AgeMax": 2,  "Price": 1.5 },
               { "Id": 2,  "AgeMin": 3,  "AgeMax": 17, "Price": 3   },
               { "Id": 3,  "AgeMin": 18, "AgeMax": 30, "Price": 4.2 },
               { "Id": 4,  "AgeMin": 31, "AgeMax": 59, "Price": 5.4 }
            ]
         }
      ]
   },
   res1 = JSON.search( data, '//SkiPass[Id=3]/Area' ),
   res2 = JSON.search( data, '//*[Area and Id=3]/Rates' )
              .sortDesc('AgeMax');  // <-- sorting descending by the value of "AgeMax"

document.getElementById('name').innerHTML = res1;

document.getElementById('max_age').innerHTML = res2[0].AgeMax;
document.getElementById('price').innerHTML = res2[0].Price;