欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2009年10月14日 19:24:47   作者:  
最近看了一下developer.mozilla.org里的東西,發(fā)現(xiàn)它為Array對象添加了不少generic method,趕得上Prototype的熱心程度。
indexOf
返回元素在數(shù)組的索引,沒有則返回-1。與string的indexOf方法差不多。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(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方法差不多。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(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
各類庫中都實現(xiàn)相似的each方法。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(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ù)組中的每個元素都能通過給定的函數(shù)的測試,則返回true,反之false。換言之給定的函數(shù)也一定要返回true與false
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(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ù),但只要有一個通過給定函數(shù)的測試就返回true。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(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
把符合條件的元素放到一個新數(shù)組中返回。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(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ù)組中的每一個元素調(diào)用給定的函數(shù),然后把得到的結(jié)果放到新數(shù)組中返回。。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(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ù),最后返回一個值,換言之給定函數(shù)一定要用返回值。
如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(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)文章

  • ionic2.0雙擊返回鍵退出應(yīng)用

    ionic2.0雙擊返回鍵退出應(yīng)用

    這篇文章主要為大家詳細介紹了ionic2.0雙擊返回鍵退出應(yīng)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Javascript 鏈式作用域詳細介紹

    Javascript 鏈式作用域詳細介紹

    這篇文章主要介紹了Javascript 鏈式作用域詳細介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 微信小程序 網(wǎng)絡(luò)通信實現(xiàn)詳解

    微信小程序 網(wǎng)絡(luò)通信實現(xiàn)詳解

    這篇文章主要介紹了微信小程序 網(wǎng)絡(luò)通信實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • 理解JavaScript中的適配器模式Adapter?Pattern

    理解JavaScript中的適配器模式Adapter?Pattern

    這篇文章主要介紹了理解JavaScript中的適配器模式,適配器模式即Adapter?Pattern,是作為兩個不兼容的接口之間的橋梁。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-04-04
  • js 自帶的sort() 方法全面了解

    js 自帶的sort() 方法全面了解

    下面小編就為大家?guī)硪黄猨s 自帶的sort() 方法全面了解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Bootstrap筆記—折疊實例代碼

    Bootstrap筆記—折疊實例代碼

    本篇文章主要介紹了Bootstrap筆記—折疊實例代碼,詳細的介紹了折疊效果實例,包括一組多組等,非常具有實用價值,需要的朋友可以參考下。
    2017-03-03
  • JS實現(xiàn)點擊文本框改變背景顏色

    JS實現(xiàn)點擊文本框改變背景顏色

    這篇文章主要為大家詳細介紹了JS實現(xiàn)點擊文本框改變背景顏色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • js中字符串編碼函數(shù)escape()、encodeURI()、encodeURIComponent()區(qū)別詳解

    js中字符串編碼函數(shù)escape()、encodeURI()、encodeURIComponent()區(qū)別詳解

    JavaScript中有三個可以對字符串編碼的函數(shù),分別是: escape,encodeURI,encodeURIComponent,相應(yīng)3個解碼函數(shù):unescape,decodeURI,decodeURIComponent 。接下來通過本文給大家介紹三者之家的區(qū)別,感興趣的朋友一起學習吧
    2016-04-04
  • 簡單的分頁代碼js實現(xiàn)

    簡單的分頁代碼js實現(xiàn)

    簡單的分頁代碼js實現(xiàn),分享給大家,感興趣的小伙伴們可以參考一下
    2016-05-05
  • axios的get請求傳入數(shù)組參數(shù)原理詳解

    axios的get請求傳入數(shù)組參數(shù)原理詳解

    這篇文章主要為大家介紹了axios的get請求傳入數(shù)組參數(shù)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06

最新評論