jQuery.grep()

jQuery.grep( array, function [, invert ] )返回类型:Array

描述:找到一个数组的元素,它满足筛选器函数。不影响原始数组。

  • 增补版本:1.0jQuery.grep( array, function [, invert ] )

    • array
      类型:ArrayLikeObject
      要搜索遍的类似数组的对象。
    • function
      类型:Function( Object elementOfArray, Integer indexInArray ) => Boolean
      针对每个项作处理的函数。函数的第一个参数是项,第二个参数是索引。此函数应该返回一个布尔值。this将是全局window对象。
    • invert
      类型:Boolean
      如果invertfalse,或者没有提供它,则函数返回一个数组,由回调函数返回true的所有元素构成。如果inverttrue,则函数返回一个数组,由回调函数返回false的所有元素构成。

$.grep()方法会根据需要删除了来自一个数组的项,从而所有留下来的项传递了一个提供的测试。此测试是一个函数,传递一个数组项以及数据内部项的索引。只有如果测试返回true,项会留在产生的数组中。

筛选器函数将传入两个参数:当前数组项以及它的索引。筛选器函数必须返回true以在输出数组中包含此项。

示例:

筛选原来的数字数组,留下不是5,而且索引大于4的数字。然后它删除所有的9。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery.grep demo</title>
<style>
div {
color: blue;
}
p {
color: green;
margin: 0;
}
span {
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<div></div>
<p></p>
<span></span>
<script>
var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];
$( "div" ).text( arr.join( ", " ) );
arr = jQuery.grep(arr, function( n, i ) {
return ( n !== 5 && i > 4 );
});
$( "p" ).text( arr.join( ", " ) );
arr = jQuery.grep(arr, function( a ) {
return a !== 9;
});
$( "span" ).text( arr.join( ", " ) );
</script>
</body>
</html>

演示:

筛选一个数字数组,只包含大于零的数字。

1
2
3
$.grep( [ 0, 1, 2 ], function( n, i ) {
return n > 0;
});

输出结果:

1
[ 1, 2 ]

筛选一个数字数组,只包含不大于零的数字。

1
2
3
$.grep( [ 0, 1, 2 ], function( n, i ) {
return n > 0;
}, true );

输出结果:

1
[ 0 ]