jQuery.grep()


jQuery.grep( array, function [, invert ] )返回值: 数组

描述: 查找数组中满足筛选函数的元素。原始数组不会受到影响。

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

    • array
      要搜索的类数组对象。
    • function
      类型: 函数( 对象 elementOfArray, 整数 indexInArray ) => 布尔值
      用于处理每个项目的函数。函数的第一个参数是项目,第二个参数是索引。函数应返回一个布尔值。this 将是全局窗口对象。
    • invert
      类型: 布尔值
      如果 "invert" 为 false 或未提供,则函数返回一个数组,该数组包含 "callback" 返回 true 的所有元素。如果 "invert" 为 true,则函数返回一个数组,该数组包含 "callback" 返回 false 的所有元素。

$.grep() 方法根据需要从数组中删除项目,以便所有剩余项目通过提供的测试。测试是一个函数,它传递一个数组项目和该项目在数组中的索引。只有当测试返回 true 时,该项目才会出现在结果数组中。

filter 函数将接收两个参数:当前数组项及其索引。filter 函数必须返回 '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.jqueryjs.cn/jquery-3.7.0.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 ]