WEB开发网
开发学院网页设计JavaScript javascript Array扩展 阅读

javascript Array扩展

 2009-09-21 00:00:00 来源:WEB开发网   
核心提示: 1.functionisBigEnough(element,index,array){2.return(element<=10);3.}4.varfiltered=[12,5,8,130,44].filter(isBigEnough);map让数组中的每一个元素调用给定的函数,然后把得到的

1.function isBigEnough(element, index, array) {
2.  return (element <= 10);
3.}
4.var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);

map

让数组中的每一个元素调用给定的函数,然后把得到的结果放到新数组中返回。。

如果其他浏览器没有实现此方法,可以用以下代码实现兼容:

1.Array.prototype.map = function(fn, thisObj) {
2.    var scope = thisObj || window;
3.    var a = [];
4.    for ( var i=0, j=this.length; i < j; ++i ) {
5.        a.push(fn.call(scope, this[i], i, this));
6.    }
7.    return a;
8.};
1.var numbers = [1, 4, 9];
2.var roots = numbers.map(Math.sqrt);
3.// roots is now [1, 2, 3]
4.// numbers is still [1, 4, 9]

reduce

让数组元素依次调用给定函数,最后返回一个值,换言之给定函数一定要用返回值。

如果其他浏览器没有实现此方法,可以用以下代码实现兼容:

01.Array.prototype.reduce = function(fun /*, initial*/)
02.{
03.  var len = this.length >>> 0;
04.  if (typeof fun != "function")
05.    throw new TypeError();
06.  if (len == 0 && arguments.length == 1)
07.    throw new TypeError();
08.  var i = 0;
09.  if (arguments.length >= 2){
10.    var rv = arguments[1];
11.  } else{
12.    do{
13.      if (i in this){
14.        rv = this[i++];
15.        break;
16.      }
17.      if (++i >= len)
18.        throw new TypeError();
19.    }while (true);
20.  }
21. 
22.  for (; i < len; i++){
23.    if (i in this)
24.      rv = fun.call(null, rv, this[i], i, this);
25.  }
26.  return rv;
27.};

1.var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });
2.// total == 6

上一页  1 2 3 4 

Tags:javascript Array 扩展

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接