天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JavaScript Array擴展實現(xiàn)代碼

indexOf
返回元素在數(shù)組的索引,沒有則返回-1。與string的indexOf方法差不多。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:
復制代碼 代碼如下:
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方法差不多。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:
復制代碼 代碼如下:
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
各類庫中都實現(xiàn)相似的each方法。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:
復制代碼 代碼如下:
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ù)組中的每個元素都能通過給定的函數(shù)的測試,則返回true,反之false。換言之給定的函數(shù)也一定要返回true與false
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:
復制代碼 代碼如下:
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ù),但只要有一個通過給定函數(shù)的測試就返回true。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:
復制代碼 代碼如下:
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
把符合條件的元素放到一個新數(shù)組中返回。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:
復制代碼 代碼如下:
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ù)組中的每一個元素調(diào)用給定的函數(shù),然后把得到的結(jié)果放到新數(shù)組中返回。。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:
復制代碼 代碼如下:
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ù),最后返回一個值,換言之給定函數(shù)一定要用返回值。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:
復制代碼 代碼如下:
Array.prototype.reduce = function(fun /*, initial*/)
{
  var len = this.length >>> 0;
  if (typeof fun != "function")
    throw new TypeError();
  if (len == 0 && arguments.length == 1)
    throw new TypeError();
  var i = 0;
  if (arguments.length >= 2){
    var rv = arguments[1];
  } else{
    do{
      if (i in this){
        rv = this[i++];
        break;
      }
      if (++i >= len)
        throw new TypeError();
    }while (true);
  }

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

復制代碼 代碼如下:
var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });
// total == 6

JavaScript技術(shù)JavaScript Array擴展實現(xiàn)代碼,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 老司机福利视频一区在线播放 | 动漫美女被到爽了流 | 国产一级毛片在线 | 免费可以看污动画软件 | 国产在线精品视亚洲不卡 | 旧里番YY6080在线播放 | 116美女写真午夜电影z | 男女高潮又爽又黄又无遮挡 | 动漫美女脱小内内露尿口 | 一本之道加勒比在线观看 | 十七岁日本免费完整版BD | 边做边爱免费视频 | 国产成人精品电影在线观看 | 精品国产成人系列 | 欧美午夜理伦三级在线观看 | 国产精品高清视频在线 | 小舞被爆操 | jizzxxxx18中国内地 | 成人国内精品久久久久影院 | 亚洲视频成人 | 午夜精品久久久久久影视riav | 黄色三级三级免费看 | 国产精品久久久久久人妻精品流 | 国精产品一区二区三区四区糖心 | 亚洲AV国产国产久青草 | 精品久久久久久久99热 | 亚洲久久少妇中文字幕 | 精品国产麻豆AV无码 | 99精品国产在热 | yw193龙物免费官网在线 | 国产精品爽爽久久久久久无码 | 玖玖爱这里只有精品视频 | 国产成人在线免费观看 | 狠狠人妻久久久久久综合九色 | 中文字幕本庄优花喂奶 | 国产午夜精品一区二区 | 国产成人久久AV免费看澳门 | 92午夜免费福利757 | 中文字幕偷乱免费视频在线 | 亚洲娇小性色xxxx | 欧美精品成人久久网站 |