• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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]

    上篇:jQuery.inArray()

    下篇:jQuery.merge()