我想知道Grep和Filter之间的区别:
过滤:
将匹配元素集减少到与选择器匹配的元素或传递函数的测试.
Grep:
查找满足过滤函数的数组元素.原始数组不受影响.
好.
所以,如果我在GREP中这样做:
var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];
myNewArray= jQuery.grep(arr, function(n, i){
return (n != 5 && i > 4);
});
Run Code Online (Sandbox Code Playgroud)
我也可以这样做:
var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];
myNewArray= $(arr).filter( function(n, i){
return (n != 5 && i > 4);
});
Run Code Online (Sandbox Code Playgroud)
在这两种情况下我仍然可以访问原始数组......
所以......区别在哪里?
ome*_*irk 129
它们都以类似的方式起作用,但它们的用法不同.
filter函数旨在与html元素一起使用,这就是为什么它是一个可链接的函数,它返回一个jQuery对象,它接受像":even",":odd"或":visible"等过滤器.你可以'使用grep函数执行此操作,该函数旨在用于数组的实用程序函数.
小智 6
它的用法不同:
过滤:
Run Code Online (Sandbox Code Playgroud)$(selector).filter(selector/function)
grep的:
Run Code Online (Sandbox Code Playgroud)$.grep(array,function,invert)
所以在你的情况下我宁愿使用,grep()因为这种方式使用数组是不必要的:$(arr).
我还假设grep函数更快,因为它只接受数组.