javascript – 如何根据一系列数字过滤数组?

前端之家收集整理的这篇文章主要介绍了javascript – 如何根据一系列数字过滤数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数组,我使用这个功能进行过滤:
function filter(arr,criteria) {
    return arr.filter(function(obj) {
        return Object.keys(criteria).every(function(c) {
            return !(criteria[c]) || obj[c] == criteria[c];
        });
    });
}

var arr = filter(arr,{ dep: dv,arr: av,car: cv,epi: acv,dur: dv });

而且我有一些选项,用户可以在选择中选择.对于持续时间,这里是我有的:

<select name="duration" id="duration">
  <option selected disabled hidden value="">-</option>
  <option value="l1">Less than 1 hour</option>
  <option value="1to3">1 to 3 hours</option>
  <option value="3to6">3 to 6 hours</option>
  <option value="6to10">6 to 10 hours</option>
  <option value="m10">More than 10 hours</option>
</select>

但是该过滤器是基于准确的标准.我想过滤1到3或6到10之间的arr中的浮点数.我也想要运行我的其他过滤器,你看到那里的dep,arr,car,epi,dur.有什么办法可以做到吗?

解决方法

使用 array.filter与回调.下面的代码使用与选项值对应的条目的字典.
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 ]
);

猜你在找的JavaScript相关文章