I have an array that I filter with this function:
function filter(arr, criteria) {
return arr.filter(function(obj) {
return Object.keys(criteria)
Use array.filter with a callback. The code below uses a dictionary with entries corresponding to option values.
var myArray = [1,2,3,3.1,Math.PI,4,4.3,6.1]; //sample array
//Dictionary from option values to functions (JS objects work like hashtables)
var options = {
"l1": function(a){return a.duration<1;},
"1to3": function(a){return a.duration>=1 && a.duration<3;},
"3to6": function(a){return a.duration>=3 && a.duration<=6;},
...
//When you need to filter the array, do it like so:
var myNewArray = myArray.filter(
options[ document.getElementById('duration').selectedOptions[0].value ]
);