grep: 数组筛选
$.grep()方法会删除数组必要的元素,以使所有剩余元素通过过滤函数的检查。该测试是一个函数传递一个数组元素和该数组内这个的索引值。只有当测试返回true,该数组元素将返回到结果数组中。函数原型如下:
jQuery.grep( array, function(elementOfArray, indexInArray) [, invert ] )
其中各个参数的意义是:
array
类型: Array
用于查询元素的数组。
function(elementOfArray, indexInArray)
类型: Function()
该函数来处理每项元素的比对。第一个参数是正在被检查的数组的元素,第二个参数是该元素的索引值。该函数应返回一个布尔值。this将是全局的window对象。
该过滤器的函数将被传递两个参数:当前正在被检查的数组中的元素,及该元素的索引值。该过滤器函数必须返回'true'以包含在结果数组项。
invert
类型: Boolean
如果“invert”为false,或没有提供,函数返回一个“callback”中返回true的所有元素组成的数组,。如果“invert”为true,函数返回一个“callback”中返回false的所有元素组成的数组。
例子: 过滤出原始数组中值不为 5,并且索引值大于 4 的元素。然后再过滤掉所有值为 9 的元素。
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<style>
-
div { color:blue; }
-
p { color:green; margin:0; }
-
span { color:red; }
-
</style>
-
<script src=""></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>
each: 数组遍历
each()方法能使DOM循环结构简洁,不容易出错。each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组、多维数组、DOM, JSON 等等
-
<script type='text/javascript' src="/jquery.js"></script>
-
<script type="text/javascript">
-
$().ready(
-
function(){
-
var anObject = {one:1,two:2,three:3};//对json数组each
-
$.each(anObject,function(name,value) {
-
alert(name);
-
alert(value);
-
});
-
var anArray = ['one','two','three'];
-
$.each(anArray,function(n,value){
-
alert(n);
-
alert(value);
-
}
-
);
-
}
-
);
-
</script>
inArray: 数组查找
$.inArray()方法类似于JavaScript的原生.indexOf()方法,没有找到匹配元素时它返回-1。如果数组第一个元素匹配value(参数) ,那么$.inArray()返回0。
因为JavaScript将0视为false(即 0 == false, 但是 0 !== false),要检查在array中是否存在value, 你需要检查它是否不等于(或大于)-1。值之间的比较是严格比较(愚人码头注:即,===或!==比较)。下面这段代码返回 -1 (没有找到) , 因为字符串数组中不可能找到一个数字:
-
<script type='text/javascript' src="/jquery.js"></script>
-
<script type="text/javascript">
-
$().ready(
-
function(){
-
var anArray = ['one','two','three'];
-
var index = $.inArray('two',anArray);
-
alert(index);//返回该值在数组中的键值,返回1
-
alert(anArray[index]);//value is two
-
}
-
);
-
</script>
map: 数组转换
如果你希望处理一个jQuery对象——例如,$('div').map( callback ); — 使用 .map() 代替.
$.map()方法会在数组的每一个元素或对象上应用一个函数并将结果映射到一个新的数组中。在jQuery 1.6之前,,$.map()只支持遍历数组和类似数组的对象 。在jQuery 1.6也支持遍历对象。
类数组(Array-like)对象——也就是那些含有.length属性 以及 在索引值为.length - 1 的位置有值的对象,必须将其转化成真正的数组之后才能传递给 $.map()方法使用。jQuery 库提供了 $.makeArray() 方法来完成这样的转换。
在该方法中提供的转换函数会应用在数组或对象的顶级(top-level)元素上,并且该转换函数中有两个参数:元素在数组或对象中的值及该值所对应的索引值或键。
该函数可以返回:
-
转换后的值,该值会被映射到最终的结果数组中
-
null或者undefined, 用于移除该元素
-
数组,会将该数组中的元素添加到最终的结果数组中
-
<script type='text/javascript' src="/jquery.js"></script>
-
<script type="text/javascript">
-
$().ready(
-
function(){
-
var strings = ['0','1','2','3','4','S','6'];
-
var values = $.map(strings,function(value){
-
var result = new Number(value);
-
return isNaN(result) ? null:result;//isNaN:is Not a Number的缩写
-
}
-
);
-
for (key in values) {
-
alert(values[key]);
-
}
-
}
-
);
-
</script>
遍历json对象:
-
<script>
-
var json = [{dd:'SB',AA:'东东',re1:123},{cccc:'dd',lk:'1qw'}];
-
for(var i=0,l=json.length;i<l;i++){
-
for(var key in json[i]){
-
alert(key+':'+json[i][key]);
-
}
-
}
-
</script>
-
-
有如下 json对象:
-
var obj ={”name”:”冯娟”,”password”:”123456″,”department”:”技术部”,”sex”:” 女”,”old”:30};
-
遍历方法:
-
for(var p in obj){
-
str = str+obj[p]+’,
阅读(3606) | 评论(0) | 转发(0) |