jquery $.grep map数组过滤与转换
$.grep(array, callback, [invert]) 过滤数组[常用]
解释: 使用过滤函数过滤数组元素.此函数至少传递两个参数(第三个参数为true或false,对过滤函数返回值取反,个人觉得用处不大): 待过滤数组和过滤函数. 过滤函数必须返回 true 以保留元素或 false 以删除元素. 另外,过滤函数还可以是可设置为一个字条串(个人不推荐,欲了解自行查阅);
$.grep(_mozi,function(val,key){
//过滤函数有两个参数,第一个为当前元素,第二个为元素索引
if(val=='墨子'){
alert('数组值为 墨子 的下标是: '+key);
}
});
var _mozigt1=$.grep(_mozi,function(val,key){
return key>1;
});
alert('_mozi数组中索引值大于1的元素为: '+_mozigt1);
var _mozilt1=$.grep(_mozi,function(val,key){
return key>1;
},true);
//此处传入了第三个可靠参数,对过滤函数中的返回值取反
alert('_mozi数组中索引值小于等于1的元素为: '+_mozilt1);
$.map(array,[callback])按给定条件转换数组 [一般]
解释:作为参数的转换函数会为每个数组元素调用, 而且会给这个转换函数传递一个表示被转换的元素作为参数. 转换函数可以返回转换后的值、null(删除数组中的项目)或一个包含值的数组, 并扩展至原始数组中.
这个是个很强大的方法,但并不常用. 它可以根据特定条件,更新数组元素值,或根据原值扩展一个新的副本元素.
var _maparra=$.map(_mozi,function(val){
return val+'[新加]';
});
var _maparrb=$.map(_mozi,function(val){
return val=='墨子' ? '[只给墨子加]'+val : val;
});
var _maparrc=$.map(_mozi,function(val){
//为数组元素扩展一个新元素
return [val,(val+'[扩展]')];
});
alert('在每个元素后面加'[新加]'字符后的数组为: '+ _maparra);
alert('只给元素 墨子 添加字符后的数组为: '+ _maparrb);
alert('为原数组中每个元素,扩展一个添加字符'[新加]'的元素,返回的数组为 '+_maparrc);