Moontools——Code扩展方法篇(2)

来源:互联网 发布:易语言edb数据库教程 编辑:程序博客网 时间:2024/06/02 08:57

说明:由于JavaScript1.5对Array增加了一些比较好用的方法,如forEach,filter,map,every,som,indexOf,但是在还不支持JavaScript1.5的浏览器里是不能用得,所以,mootools通过扩展Array来使其实现对这些方法的支持:
1.Array对象的forEach方法
原型:Array.prototype.forEach(callBack:Function,thisObject:Object)
作用:对数组进行迭代操作,它有两个参数,第一个参数callBack是每次迭代所执行的函数,第二个参数thisObject可选,是要绑定到迭代执行的函数上的对象(也就是函数callBack中的this所指向的对象)
  例子:
//用法一
Var arr=[1,2,3,4,5,6];
  arr.forEach(function(e){
  alert(e);
  });
  //用法二
  Var arr=[1,2,3,4,5,6];
  var obj="hello!";
  arr.forEach(function(e){
  alert(e+'--'+this); //这里的this指后面的obj对象
  },obj);
  //用法三
  Function putElt(element,index,array){
  document.write("pos["+index+"]inarray("+array+")is"+
element+'<br>');}
  [2,5,9].forEach(putElt);
  2.Array对象的filter方法
         原型:Array.prototype.filter(callBack:Function,thisObject:Object)
      作用:迭代数组,每个元素作为参数执行callBack方法,由callBack方法作为数据过滤网,最后返回过滤后的一个数组
 例子:
   Var result=[1,2,3,4,5].filter(function(e){
    return e>3;
         });
         alert(result); //结果为4,5
3.Array对象的map方法:
  原型:Array.prototype.map(callBack:Function,thisObject:Object)
  作用:迭代数组,每个元素作为参数执行callBack方法,由callBack方法对每个元素进行处理,最后返回处理后的一个数组
  例子:
Var result=[1,2,3,4,5].map(function(e){
    return e+'px';
         });
alert(result); //结果为1px,2px,3px,4px,5px
4.Array对象的every方法:
  原型:Array.prototype.every(callBack:Function,thisObject:Object)
  作用:它的意思就是:是否数组中的每个元素都通过了callBack的处理?如果是,则返回true,如果有一个不是,则返回false
  例子:
          Var result=[1,2,3,4,5].every(function(e){
            return e>3;
         });
         alert(result);  //返回false
5.Array对象的some方法:
  原型:Array.prototype.some(callBack:Function,thisObject:Object)
  作用:它的意思就是:是否数组中的有元素通过了callBack的处理?如果有,则返回true,如果一个都没有,则返回false
       Var result=[1,2,3,4,5].some(function(e){
        return e>3;
         });
         alert(result);  //返回true
6.Array对象的indexOf方法:
  原型:indexOf(searchElement:Object,fromIndex:Number)
  作用:在数组中查找是否含有指定对象,如果有,返回对象所在的索引,否则返回-1;第二个参数是可选参数,如果指定的话,比如指定3,则表示从数组的第4个元素开始查找;默认从第0个元素开始查找。
  例子:Var x1=[1,2,3,4,5].indexOf(2);  //结果为1
         var x2=[1,2,3,4,5].indexOf(2,3); //结果为-1
以下的方法是mootools提供的Array的专有扩展,和JavaScript标准无关
7.each:它的用法和作用与forEach一模一样,参看上文的forEach
8.copy:复制数组元素到新的数组中;默认是全部复制,如果指定了开始索引和长度的话,则可以按指定形式复制
例子:Var a=[1,2,3,4,5,6];
var b1=a.copy();    //[1,2,3,4,5,6]
var b2=a.copy(2,2); //[3,4]
9.remove:删除数组中指定值的元素
  例子:Var a=[1,2,2,3,4,5,6];
var b=a.remove(4); //[1,2,2,3,5,6]
var c=a.remove(2); //[1,3,4,5,6]
10.test:查找数组中是否有指定的值
  例子:Var a=[1,2,3,4,5,6];
           var b=a.test(11);   //fasle
           var c=a.test(2);    //true
11.extend:把另一个数组追加到本数组后(不排除相同值的) 方法:Object.extend[a,b]则会排除相同值
  例子:Var a=[1,2,3,4];
         var b=[1,11,12];
         a.extend(b);
         alert(a);      //1,2,3,4,1,11,12
12.associate:把另一个数组中的值作为key,本数组中的值做为值,组成一个键值对象(长度为两者中较小的那个)
  例子:
         Var v=[1,2,3,4,5];
         var k=['one','two','three'];
         var kv=v.associate(k);
         alert(kv['one']);       //1
         var v=[1,2];
         var k=['one','two','three'];
         var kv=v.associate(k);
         alert(kv['one']);       //1
         alert(kv['three']);      //undefined
13.$A:和Array的copy方法是一样的作用
  例子:Var a=[1,2,3,4];
           var b=$A(a);    //[1,2,3,4]
           var c=$A(a,1,2);  //[2,3]
14.$each:功能基本和Array的forEach方法相同,官方文档上说可用于非常规数组的迭代,如由getElemntsByTagName调用产生的结果,以及参数数组arguments等。不过管它常规不常规,用起来的形式还是一样的

原创粉丝点击