成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Javascript中的Array擴(kuò)展

開發(fā) 前端
這里我們將介紹Javascript中的Array擴(kuò)展,希望看完本文之后,能對(duì)大家了解Array擴(kuò)展有所幫助。

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

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

indexOf

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

如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(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方法差不多。

如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(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

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

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

  1. Array.prototype.forEach = function(fn, thisObj) {   
  2.     var scope = thisObj || window;   
  3.     for ( var i=0j=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ù)組中的每個(gè)元素都能通過給定的函數(shù)的測(cè)試,則返回true,反之false。換言之給定的函數(shù)也一定要返回true與false

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

  1. Array.prototype.every = function(fn, thisObj) {   
  2.    var scope = thisObj || window;   
  3.     for ( var i=0j=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ù),但只要有一個(gè)通過給定函數(shù)的測(cè)試就返回true。

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

  1. Array.prototype.some = function(fn, thisObj) {   
  2.     var scope = thisObj || window;   
  3.     for ( var i=0j=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

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

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

  1. Array.prototype.filter = function(fn, thisObj) {   
  2.     var scope = thisObj || window;   
  3.    var a = [];   
  4.     for ( var i=0j=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ù)組中的每一個(gè)元素調(diào)用給定的函數(shù),然后把得到的結(jié)果放到新數(shù)組中返回。。

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

  1. Array.prototype.map = function(fn, thisObj) {   
  2.     var scope = thisObj || window;   
  3.     var a = [];   
  4.    for ( var i=0j=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ù),***返回一個(gè)值,換言之給定函數(shù)一定要用返回值。

如果其他瀏覽器沒有實(shí)現(xiàn)此方法,可以用以下代碼實(shí)現(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 
原文標(biāo)題:javascript Array擴(kuò)展

鏈接:http://www.cnblogs.com/rubylouvre/archive/2009/09/20/1570461.html

【編輯推薦】

  1. JSON是什么?為JavaScript準(zhǔn)備的數(shù)據(jù)格式
  2. 十個(gè)最常用的JavaScript自定義函數(shù)
  3. 有關(guān)JavaScript事件加載的一些延伸思考
  4. JavaScript使用心得匯總:從BOM和DOM談起
  5. ExtJS在Android模擬器上的運(yùn)行效果
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2013-05-08 10:36:07

JavaScriptJS詳解JavaScrip

2009-03-16 09:16:13

行為擴(kuò)展WCF.NET

2017-03-20 14:45:42

JavaScript詳解

2016-10-11 20:33:17

JavaScriptThisWeb

2016-09-12 17:19:51

JavaScriptArray操作技巧

2016-12-27 10:19:42

JavaScriptindexOf

2010-09-08 15:13:09

Node節(jié)點(diǎn)Node屬性

2009-10-26 15:07:12

checkbox樹

2024-04-26 08:27:15

JavaScriptCSSHTML元素

2020-11-18 09:06:02

JavaScript開發(fā)技術(shù)

2016-08-12 11:04:17

JavaScript物聯(lián)網(wǎng)應(yīng)用

2009-11-06 13:28:19

Javascript框

2021-06-25 10:18:08

JavaScript Array.map 巧技拾遺

2010-10-09 09:56:51

JavaScriptObject對(duì)象

2014-07-11 09:33:24

iOS 8動(dòng)作擴(kuò)展

2024-08-30 08:35:03

JavaScript切片數(shù)組

2010-07-07 18:34:43

UML公共機(jī)制

2015-12-24 10:05:39

JavaScripttypeofinstanceof

2010-10-09 09:18:14

JavaScriptArray對(duì)象

2021-11-11 14:50:01

JavaScriptarry編程開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一区在线免费视频 | 久久成人精品一区二区三区 | 国产区在线观看 | 成人av网站在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 91久久久久久 | 精品欧美一区二区中文字幕视频 | 国产免费一区 | 日本在线小视频 | www.蜜桃av| av夜夜操| 久久久久无码国产精品一区 | 九九热免费在线观看 | 成人欧美一区二区三区在线播放 | 91在线视频免费观看 | 毛片大全 | 国产丝袜一区二区三区免费视频 | 日韩在线免费视频 | 成人一级黄色毛片 | 91精品国产综合久久久久久漫画 | 欧美视频三区 | 九色视频网站 | 午夜精品导航 | 色黄网站| 综合视频在线 | 久久久久国产精品午夜一区 | 久久久久久网 | 性生生活大片免费看视频 | 成人免费在线 | 国产成人综合av | 国产一区二区三区久久久久久久久 | 国产高清性xxxxxxxx | 精品人伦一区二区三区蜜桃网站 | 成人在线a | 精品麻豆剧传媒av国产九九九 | 久久免费视频1 | 国产成人在线免费 | 日本午夜网 | 一区二区三区四区在线播放 | a天堂在线 | 成年人网站免费 |