How do I filter an array based on a range of numbers?

后端 未结 2 693
南笙
南笙 2021-01-11 17:26

I have an array that I filter with this function:

function filter(arr, criteria) {
    return arr.filter(function(obj) {
        return Object.keys(criteria)         


        
2条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-01-11 18:11

    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 ]
    );
    

提交回复
热议问题