jquery經常使用遍歷工具函數

遍歷在這裏 http://my.oschina.net/u/2352644/blog/508397 html

廢話很少說,一個句話告訴你jq的遍歷工具數組

咱們對數組的循環通常是用for或者for in,這是原生js支持,一樣既然用jq的了,咱jq也提供了對數組的遍歷方法,也就是對原生js循環的封裝函數

1、$.each()和for循環等不得不說的祕密工具

咱們循環一個數組通常是下面的處理,利用for循環測試

 var arr=[0,1,2];
 for(var i=0;i<arr.length;i++){
  alert("第"+i+"項"+arr[i])
 };

會彈出第幾項是幾,這是咱們最習慣的寫法,咱們下面看jq提供的方法,spa

 var arr=[0,1,2]; 
 $.each( arr, function(i, n){
  alert("第"+i+"項"+n)
 });

效果同樣,這個就是jq提供的遍歷方法,若是僅僅是對普通數組能夠,那就不必了,既然封裝,確定功能比較多的,咱們還能夠遍歷對象類型數據({})的,看下面.net

var obj={"aa":1,"bb":2,"cc":3}; 
 $.each( obj, function(i, n){
  alert("第"+i+"項"+n)
 });

--覺醒了插件

咱們忽然醒悟,咱們在上篇博客知道有for in循環,這個不就能夠實現數組和對象類型的循環嗎,既然已經醒悟,咱們本身封裝一個each方法吧!code

 function each(obj,callback){
  for(var i in obj){
   callback(i,obj[i]);
  };
 };
 var obj={"aa":1,"bb":2,"cc":3}; 
 each( obj, function(i, n){  
  alert("第"+i+"項"+n) 
 });

萬能的主已經靠近咱們,在測試循環數組htm

 function each(obj,callback){
  for(var i in obj){
   callback(i,obj[i]);
  };
 };
 var arr=[0,1,2];
 each( arr, function(i, n){  
  alert("第"+i+"項"+n) 
 });

再不用jq的時候咱們只要寫了這個函數也就各類遍歷了

2、$.extend()

var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var newobj=$.extend(settings, options);
alert(newobj['validate'])  

函數會獲取先後對象的全部屬性(下表),出現相同下表後替換前原則,咱們在一片jq插件很詳細介紹過這個的使用原理,除了合成新的對象還能夠作工具擴展

http://my.oschina.net/u/2352644/blog/487688

3、$.grep()

var aa=$.grep( [0,1,2], function(n,i){
   return n > 0;
 });
 alert(aa)

迭代方法,過濾出咱們須要的內容

--模擬實現

 function grep(arr,callback){
  var temp=[];
  for(var i=0;i<arr.length;i++){
   if(callback(arr[i],i)){
    temp.push(arr[i]);
   }else{
    
   }   
  };
  return temp;
 };
 var aa=grep( [0,1,2], function(n,i){
   return n > 0;
 });
 alert(aa)

4、$.inArray()

var arr = [ 4, "Pete", 8, "John" ];
alert($.inArray("John", arr)); 

返回參數值在數組的位置,不存在返回-1

--模擬實現

 function inArray(rel,arr){
  var index=-1;
  for(var i=0;i<arr.length;i++){
   if(arr[i]==rel){
    index=i;
   }else{}
  }
  return index;
 };
 var arr = [ 4, "Pete", 8, "John" ];
 alert(inArray("John", arr));
 alert(inArray("aa", arr));

 5、$.merge()

alert($.merge( [0,1,2], [2,3,4] ));

把參數2數組和參數1數組拼接

--模擬實現

 function merge(arr1,arr2){
  return arr1.concat(arr2)
 };
 alert(merge( [0,1,2], [2,3,4] ));
相關文章
相關標籤/搜索