188金宝搏官网jquery数组过滤筛选方法grep简介_jquery_脚本之家

遇到的问题

jquery中有个grep()方法用于数组元素过滤筛选,悲剧的是,平时我们用的api文档中找不到这个说明。查看官方说明:

今天遇到一个问题,删除数组中的一个指定元素,并返回新的数组。

grep()的使用方法:

188金宝搏官网,我定义的js数组是这样的:

grep(array,callback,invert)

var sexList=new Array[3];sexList[0]="1";sexList[1]="2";sexList[2]="";

array:待过滤数组;

我想达到的效果是这样的:

callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个是当前数组元素的值,一个是当前数组元素的下标,即元素索引值。此函数应返回一个布尔值。另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”,其中
a 代表数组元素,i 代表元素索引值。如“a > 0”代表“function{ return a
> 0; }”

删除索引=1的元素,并返回新数组。

invert:布尔型可选项,默认值false,值为true或false, 如果 “invert” 为
false 或为设置,则函数返回数组中由过滤函数返回 true 的元素,当”invert”
为 true,则返回过滤函数中返回 false 的元素集。

var sexList=new Array;

解释完grep()的用法,现在来举个小例子:复制代码 代码如下:var
arr=$.grep([0,1,2,3,4,5,6],function;上面的例子返回[3,4,5,6],但是我们给invert的值为true,例如复制代码 代码如下:var
arr=$.grep([0,1,2,3,4,5,6],function{return n>2},ture);

我们知道,原生的javascript有一个函数:splice()
方法,可以删除数组中的指定元素。

所以现在返回的是[0,1,2],也就是被callback函数过滤掉的元素。

关于splice()方法的具体用法,可以参考w3school的描述,这里不多做解释:

使用splice()的实现代码

var sexList=new Array[3];sexList[0]="1";sexList[1]="2";sexList[2]="";sexList=sexList.splice;

但是我发现我的数组使用这种方式时,返回的数组是不符合预期的。返回的是个空字符串。

发表评论

电子邮件地址不会被公开。 必填项已用*标注