将参数传递给jquery$.grep
passing parameter to jquery $.grep
如果我有这段代码,它会检查数组中是否已经存在某种东西
var array = [ 1, 5, 12, 31, 7, 69 ];
var array = $.grep(array, function(n, i) {
return (n == 112);
});
alert(array.length);
我的问题很简单:如何将变量传递给这个grep函数,并在表达式中使用它来代替硬编码的112值?
您可以从外部传递一个变量。JavaScript的词法作用域允许将外部作用域中的变量传递到更深层次的函数中。
http://jsfiddle.net/ag1djcjm/
var array = [ 1, 5, 12, 31, 7, 69];
var code = 112;
// No need to declare variables twice
array = $.grep(array, function(n, i) {
return (n == code);
});
alert(array.length);
像这样尝试
var array = [ 1, 5, 12, 31, 7, 69 ];
var val=112;
// remove var from here it'll re-declare same variable
array = $.grep(array, function(n, i) {
return (n == val);
});
alert(array.length);
JSFIDDLE
您可以通过javascript的.filter()以及来完成此操作
像这个
var array = [ 1, 5, 12, 31, 7, 69 ];
var val=112;
array = array.filter(function(n) { return n == val; });
alert(array.length);
JSFIDDLE
因此,您基本上要做的是确定一个数字数组是否包含某个数字(变量)。
没有必要用grep来使这件事过于复杂。只需使用indexOf
:
var array = [ 1, 5, 12, 31, 7, 69 ],
search = 112,
hasNumber = array.indexOf(search) !== -1;
// Using this so that it's visible in the snippet.
document.body.textContent = hasNumber;
只需在调用$.grep函数之前定义需要过滤的值。参见以下示例
var array = [1, 5, 12, 31, 7, 69],
filterValue = 5;
var newArray = $.grep(array, function (n, i) {
return n == filterValue;
});
由于您正在重新定义数组,我创建了一个新的变量newArray
,并为其分配了筛选值,但您仍然可以将其分配给array
变量。
代码:
function filter ( data, val ) {
return $.grep(data, function ( n, i ) {
return (n == val);
});
}
测试:
var array = [ 1, 5, 12, 31, 7, 69];
var test = filter(array, 112);
alert(test.length);
可以在$.grep()
之外创建一个函数,为数组中的每个项调用;还可以将附加参数传递给函数。还可以尝试为输入数组定义不同的变量名,从而得到数组
var array = [ 1, 5, 12, 31, 7, 69 ], num = 112
, compare = function(n, i) { return n === num }
var res = $.grep(array, compare);
相关文章:
- grep in JQuery to C#
- 使用jquery grep过滤具有值数组的json对象
- 在 jQuery 中使用 grep 编写通用过滤器
- jQuery grep 返回多维数组
- 用于多种类型的过滤器的 jQuery grep 方法
- jQuery Range 滑块 grep 返回具有最小值和最大值的项目
- 将参数传递给jquery$.grep
- 如何使用jQuery.grep()动态筛选数组
- jquery grep,使用regex进行fitlering
- jQuery.grep用于查找关键字和短语
- jQuery grep gripes
- jQuery.Grep和多于1个条件
- “本”的适用范围在jquery小部件中使用grep时发生的变化
- Jquery -使用grep搜索表的所有列
- jQuery GREP + JSON空数据过滤器
- 如何使用jQuery的grep()函数过滤动态输入
- 如何使用jQuery.grep()过滤多维JSON对象
- jQuery grep跳过数组中的术语
- 在对象上使用jQuery grep
- 按名称、价格筛选JQuery列表..json数组,JQuery.grep()