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

随机推荐

  1. php json josn_decode()返回的是对像,如何把对像转成数组

    php json josn_decode()返回的是对像,如何把对像转成数组 a.php传值页面,使用 json_encode($array)对数组进行加密码. b.php页面在接收a.php传过来的 ...

  2. 使用 Python 的 Socket 模块构建一个 UDP 扫描工具

    译文:oschina 英文:bt3gl 当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机.这个任务还可能包含嗅探和解析网络中数据包的能力. 几周前,我曾经谈到了如何使用Wireshark来 ...

  3. LeetCode--110--平衡二叉树

    问题描述: 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. 示例 1: 给定二叉树 [3,9,20,n ...

  4. codeforces 576a//Vasya and Petya's Game// Codeforces Round #319 (Div. 1)

    题意:猜数游戏变种.先选好猜的数,对方会告诉你他想的那个数(1-n)能不能整除你猜的数,问最少猜几个数能保证知道对方想的数是多少? 对一个质数p,如果p^x不猜,那么就无法区分p^(x-1)和p^x, ...

  5. python-day6---while循环

    # while 条件:# 循环体的代码1# 循环体的代码2# 循环体的代码3# count=0# while count < 10:# print(count)# count+=1 # whil ...

  6. 处理Oracle EBS R12登录首页跳转出现unexpected error问题(转)

    原文地址: 处理Oracle EBS R12登录首页跳转出现unexpected error问题 经上网搜索,造成此问题的问题有很多,如内存不足.系统参数配置不当.程序代码.系统表空间不足等原因.查询 ...

  7. CSRmesh Application

    1.CSRmesh Control Application v2.0.1版本可以运行在支持BLE4.0的Android设备上,该版本在Android4.4.4.5.0.5.0.1.5.0.2.5.1和 ...

  8. struts1的parameter

    1.配置文件    parameter="method" 2.请求路径      http://localhost:8081/purchaseDeclareAction.do?me ...

  9. L1-002 打印沙漏

    所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印 ...

  10. Swift语法笔记

    Guard guard是一种条件判断语句,可以类比if.assert.如果条件不符合,guard的else语句就运行,从而退出这个函数. 具体写法如下: func fooGuard(x: Int?) ...