jQuery.grep()
查找满足过滤函数的数组元素。原始数组不受影响。
jQuery.grep(array, function[, invert ])
- array类型: ArrayLikeObject。用于查询元素的类数组对象.
- function类型:Function(
Object elementOfArray,Integer indexInArray)=> Boolean。该函数来处理每项元素的比对。第一个参数是正在被检查的数组的元素,第二个参数是该元素的索引值。该函数应返回一个布尔值。this
将是全局的window对象。 - invert类型: Boolean。如果“invert”为false,或没有提供,函数返回一个“callback”中返回true的所有元素组成的数组。如果“invert”为true,函数返回一个“callback”中返回false的所有元素组成的数组。
$.grep()
方法会删除数组必要的元素,以使所有剩余元素通过过滤函数的检查。该测试是一个函数传递一个数组元素和该数组内这个的索引值。只有当测试返回true,该数组元素将返回到结果数组中。
该过滤器的函数将被传递两个参数:当前正在被检查的数组中的元素,及该元素的索引值。该过滤器函数必须返回'true'以包含在结果数组项。
例子
过滤出原始数组中值不为 5,并且索引值大于 4 的元素。然后再过滤掉所有值为 9 的元素。
<!DOCTYPE html> <html> <head> <style> div { color:blue; } p { color:green; margin:0; } span { color:red; } </style> <script src="https://www.lanmper.cn/static/js/jquery-3.5.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>
过滤出数组中值大于 0 的元素。
$.grep( [0,1,2],function (n,i){return n > 0; });
Result:[1, 2]
过滤出数组中值不大于 0 的元素。
$.grep( [0,1,2],function (n,i){return n > 0; },true);
Result:[0]