日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
詳解Javascript中的Array擴展

Javascript中的Array擴展,一般都是從對象本身入手。這里我們將介紹一些Array對象中的一些東西,比如indexOf是返回元素在數(shù)組的索引,沒有則返回-1等等。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供猇亭網(wǎng)站建設(shè)、猇亭做網(wǎng)站、猇亭網(wǎng)站設(shè)計、猇亭網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、猇亭企業(yè)網(wǎng)站模板建站服務(wù),十年猇亭做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

最近看了一下developer.mozilla.org里的東西,發(fā)現(xiàn)它為Array擴展添加了不少generic method,趕得上Prototype的熱心程度。

indexOf

返回元素在數(shù)組的索引,沒有則返回-1。與string的indexOf方法差不多。

如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:

   
 
 
  1. Array.prototype.indexOf = function(el, start) {   
  2.     var startstart = start || 0;   
  3.     for ( var i=0; i < this.length; ++i ) {   
  4.         if ( this[i] === el ) {   
  5.             return i;   
  6.        }   
  7.     }   
  8.     return -1;   
  9. };  
  10. var array = [2, 5, 9];   
  11. var index = array.indexOf(2);   
  12. // index is 0   
  13. index = array.indexOf(7);   
  14. // index is -1  

lastIndexOf

與string的lastIndexOf方法差不多。

如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:

   
 
 
  1. Array.prototype.lastIndexOf = function(el, start) {   
  2.     var startstart = start || this.length;   
  3.     if ( start >= this.length ) {   
  4.         start = this.length;   
  5.     }   
  6.    if ( start < 0 ) {   
  7.          start = this.length + start;   
  8.     }   
  9.    for ( var i=start; i >= 0; --i ) {   
  10.         if ( this[i] === el ) {   
  11.           return i;   
  12.       }   
  13.    }   
  14.     return -1;   
  15. };  

forEach

各類庫中都實現(xiàn)相似的each方法。

如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:

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

every

如果數(shù)組中的每個元素都能通過給定的函數(shù)的測試,則返回true,反之false。換言之給定的函數(shù)也一定要返回true與false

如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:

   
 
 
  1. Array.prototype.every = function(fn, thisObj) {   
  2.    var scope = thisObj || window;   
  3.     for ( var i=0, j=this.length; i < j; ++i ) {   
  4.         if ( !fn.call(scope, this[i], i, this) ) {   
  5.             return false;   
  6.         }   
  7.     }   
  8.     return true;   
  9. };  
  10. function isBigEnough(element, index, array) {   
  11.   return (element >= 10);   
  12. }   
  13. var passed = [12, 5, 8, 130, 44].every(isBigEnough);   
  14. console.log(passed)   
  15. // passed is false   
  16. passed = [12, 54, 18, 130, 44].every(isBigEnough);   
  17. // passed is true   
  18. console.log(passed)  

some

類似every函數(shù),但只要有一個通過給定函數(shù)的測試就返回true。

如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:

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

filter

把符合條件的元素放到一個新數(shù)組中返回。

如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:

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

map

讓數(shù)組中的每一個元素調(diào)用給定的函數(shù),然后把得到的結(jié)果放到新數(shù)組中返回。。

如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:

    
 
 
  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. };  
  9. var numbers = [1, 4, 9];   
  10. var roots = numbers.map(Math.sqrt);   
  11. // roots is now [1, 2, 3]   
  12. // numbers is still [1, 4, 9] 

reduce

讓數(shù)組元素依次調(diào)用給定函數(shù),***返回一個值,換言之給定函數(shù)一定要用返回值。

如果其他瀏覽器沒有實現(xiàn)此方法,可以用以下代碼實現(xiàn)兼容:

    
 
 
  1. Array.prototype.reduce = function(fun /*, initial*/)   
  2. {   
  3.   var len = this.length >>> 0;   
  4.  if (typeof fun != "function")   
  5.     throw new TypeError();   
  6.  if (len == 0 && arguments.length == 1)   
  7.    throw new TypeError();   
  8.  var i = 0;   
  9.   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.   for (; i < len; i++){   
  22.    if (i in this)   
  23.      rv = fun.call(null, rv, this[i], i, this);   
  24.   }   
  25.   return rv;   
  26. };  
  27. var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });   
  28. // total == 6 

網(wǎng)頁題目:詳解Javascript中的Array擴展
文章網(wǎng)址:http://www.5511xx.com/article/cdjisgg.html