微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/js/153422.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐