zoukankan      html  css  js  c++  java
  • $.grep()的用法

    grep()方法用于数组元素过滤筛选

    grep(array,callback,invert)
    array:待过滤数组;
    callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个是当前数组元素的值,一个是当前数组元素的下标,即元素索引值。此函数应返回一个布尔值。另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中 a 代表数组元素,i 代表元素索引值。如“a > 0”代表“function(a){ return a > 0; }”
    invert:布尔型可选项,默认值false,值为true或false, 如果 “invert” 为 false 或为设置,则函数返回数组中由过滤函数返回 true 的元素,当”invert” 为 true,则返回过滤函数中返回 false 的元素集。
    var arr=$.grep([0,1,2,3,4,5,6],function(n,i){
    return n>2
    });
    上面的例子返回[3,4,5,6],但是我们给invert的值为true,例如
    var arr=$.grep([0,1,2,3,4,5,6],function(n,i){
    return n>2
    },ture);
    所以现在返回的是[0,1,2],也就是被callback函数过滤掉的元素。
     
    var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];
      arr = jQuery.grep(arr, function( n, i ) {
         if( n !== 5 && i > 4){
           return true;
          }
    });
     等价于:
    arr = jQuery.grep(arr, function( n, i ) {
             return ( n !== 5 && i > 4 );
      });

     OA差旅用到该函数来筛选起飞时间:

    define(function (require, exports, module) {
        var init = function() {
            //outsideArr是要去进行筛选的原始数组
            var outsideArr=[
                {
                    'depTime':0020,
                    'name':'xiaohua'
                },{
                    'depTime':0050,
                    'name':'dahua'
                },{
                    'depTime':0025,
                    'name':'laohua'
                }
            ]
            //innerArr为筛选条件数组
            var innerArr=[
                {
                    'start':0010,
                    'end':0030
                }
            ];
            var innerArrNew={
                    'start':0010,
                    'end':0030
                };
            //$.grep()函数中,第一个参数为数组,第二个参数为true时,返回数组,
            //每次取出数组outsideArr的一个对象和筛选数组innerArr循环进行判断
            //一旦该数组outsideArr的该对象满足筛选数组innerArr的任何一个条件,则flag=true
            //所以当flag=true时,返回outsideArr的数组该元素
            var ephemeralsec = $.grep(outsideArr, function (item, index) {
                    var flag = false;
                    $.each(innerArr, function(i, subItem) {
                        if (item.depTime > subItem.start && item.depTime <= subItem.end) {
                            flag = true;
                        }
                    });
                    if (flag) {
                        return true;//返回值为true时,相当于返回的是outsideArr数组中的item
                    }
            });
            //如果筛选条件不是数组,则变成我们常见的形式,没有对里面筛选条件的循环
            var ephemeralthree = $.grep(outsideArr, function (item, index) {  
                if (item.depTime > innerArrNew.start && item.depTime <= innerArrNew.end) {
                   return true;
                }
            });
          console.log(ephemeralthree);
        };
        module.exports = init;
    });

    用图片显示:

    // 选择航空公司筛选(和上面时间筛选不一样,是因为时间要筛选一个范围的值,而下面的筛选选择包含的值)

    // 选择出发机场筛选
     if (filterselected.depAirdrome.length > 0){
     ephemeral = $.grep(ephemeral, function (item, index) {
      if($.inArray(item.depAirdrome, filterselected.depAirdrome) != -1) {
          return true;
        }
       });
     }
  • 相关阅读:
    div居中鼠标悬浮显示下拉列表
    javascript循环
    javascript函数
    javascript时间、随机数
    javascript外部使用
    Javascript 探路
    CSS六大选择器(注释css表里不能加注释!!)
    框架链接
    Jmeter分布式测试dubbo接口2
    Jmeter分布式测试dubbo接口1
  • 原文地址:https://www.cnblogs.com/xiaozhumaopao/p/6266293.html
Copyright © 2011-2022 走看看