最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript Array擴(kuò)展實(shí)現(xiàn)代碼

 更新時(shí)間:2009年10月14日 19:24:47   作者:  
最近看了一下developer.mozilla.org里的東西,發(fā)現(xiàn)它為Array對(duì)象添加了不少generic method,趕得上Prototype的熱心程度。
indexOf
返回元素在數(shù)組的索引,沒有則返回-1。與string的indexOf方法差不多。
如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(xiàn)兼容:
復(fù)制代碼 代碼如下:

Array.prototype.indexOf = function(el, start) {
    var start = start || 0;
    for ( var i=0; i < this.length; ++i ) {
        if ( this[i] === el ) {
            return i;
        }
    }
    return -1;
};
var array = [2, 5, 9];
var index = array.indexOf(2);
// index is 0
index = array.indexOf(7);
// index is -1

lastIndexOf
與string的lastIndexOf方法差不多。
如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(xiàn)兼容:
復(fù)制代碼 代碼如下:

Array.prototype.indexOf = function(el, start) {
    var start = start || 0;
    for ( var i=0; i < this.length; ++i ) {
        if ( this[i] === el ) {
            return i;
        }
    }
    return -1;
};

forEach
各類庫(kù)中都實(shí)現(xiàn)相似的each方法。
如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(xiàn)兼容:
復(fù)制代碼 代碼如下:

Array.prototype.forEach = function(fn, thisObj) {
    var scope = thisObj || window;
    for ( var i=0, j=this.length; i < j; ++i ) {
        fn.call(scope, this[i], i, this);
    }
};
function printElt(element, index, array) {
    print("[" + index + "] is " + element); // assumes print is already defined
}
[2, 5, 9].forEach(printElt);
// Prints:
// [0] is 2
// [1] is 5
// [2] is 9

every
如果數(shù)組中的每個(gè)元素都能通過給定的函數(shù)的測(cè)試,則返回true,反之false。換言之給定的函數(shù)也一定要返回true與false
如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(xiàn)兼容:
復(fù)制代碼 代碼如下:

Array.prototype.every = function(fn, thisObj) {
    var scope = thisObj || window;
    for ( var i=0, j=this.length; i < j; ++i ) {
        if ( !fn.call(scope, this[i], i, this) ) {
            return false;
        }
    }
    return true;
};
function isBigEnough(element, index, array) {
  return (element <= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true

some
類似every函數(shù),但只要有一個(gè)通過給定函數(shù)的測(cè)試就返回true。
如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(xiàn)兼容:
復(fù)制代碼 代碼如下:

Array.prototype.some = function(fn, thisObj) {
    var scope = thisObj || window;
    for ( var i=0, j=this.length; i < j; ++i ) {
        if ( fn.call(scope, this[i], i, this) ) {
            return true;
        }
    }
    return false;
};
function isBigEnough(element, index, array) {
  return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true

filter
把符合條件的元素放到一個(gè)新數(shù)組中返回。
如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(xiàn)兼容:
復(fù)制代碼 代碼如下:

Array.prototype.filter = function(fn, thisObj) {
    var scope = thisObj || window;
    var a = [];
    for ( var i=0, j=this.length; i < j; ++i ) {
        if ( !fn.call(scope, this[i], i, this) ) {
            continue;
        }
        a.push(this[i]);
    }
    return a;
};
function isBigEnough(element, index, array) {
  return (element <= 10);
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);

map
讓數(shù)組中的每一個(gè)元素調(diào)用給定的函數(shù),然后把得到的結(jié)果放到新數(shù)組中返回。。
如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(xiàn)兼容:
復(fù)制代碼 代碼如下:

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

reduce
讓數(shù)組元素依次調(diào)用給定函數(shù),最后返回一個(gè)值,換言之給定函數(shù)一定要用返回值。
如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(xiàn)兼容:
復(fù)制代碼 代碼如下:

Array.prototype.reduce = function(fun /*, initial*/)
{
  var len = this.length &gt;&gt;&gt; 0;
  if (typeof fun != &quot;function&quot;)
    throw new TypeError();
  if (len == 0 &amp;&amp; arguments.length == 1)
    throw new TypeError();
  var i = 0;
  if (arguments.length &gt;= 2){
    var rv = arguments[1];
  } else{
    do{
      if (i in this){
        rv = this[i++];
        break;
      }
      if (++i &gt;= len)
        throw new TypeError();
    }while (true);
  }

  for (; i &lt; len; i++){
    if (i in this)
      rv = fun.call(null, rv, this[i], i, this);
  }
  return rv;
};

復(fù)制代碼 代碼如下:

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

相關(guān)文章

最新評(píng)論

德安县| 通河县| 区。| 峨山| 芦溪县| 岑溪市| 巫溪县| 乌鲁木齐县| 华亭县| 基隆市| 交城县| 富民县| 江门市| 柘城县| 扬中市| 淮安市| 郸城县| 新宁县| 望江县| 肃南| 贡觉县| 黔西| 顺平县| 呼伦贝尔市| 健康| 新和县| 武陟县| 克什克腾旗| 乌拉特前旗| 清原| 瑞金市| 清苑县| 夹江县| 灵寿县| 沾益县| 屏东县| 丰城市| 江川县| 台安县| 炎陵县| 道孚县|