亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript遍歷數組的三種方法map、forEach與filter實例詳解

2019-11-19 12:03:57
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript遍歷數組的三種方法map、forEach與filter。分享給大家供大家參考,具體如下:

前言

近一段時間,因為項目原因,會經常在前端對數組進行遍歷、處理,JS自帶的遍歷方法有很多種,往往不加留意,就可能導致知識混亂的現象,并且其中還存在一些坑。前端時間在ediary中總結了js原生自帶的常用的對數組遍歷處理的方法,分別為:map、forEach、filter,在講解知識點的同時,會類比相識的函數進行對比,這樣會有助于思考方法的利與弊。

一、Js自帶的map()方法

1.方法概述

map()方法返回一個由原數組中的每個元素調用一個指定方法后的返回值組成的新數組

2.格式說明

var newArray = ["1","2","3"].map(fucntion(e,i,arr){return parseInt(e,10)})
  • map中回調函數中的第一個參數為:當前正在遍歷的元素
  • map中回調函數中的第二個參數為:當前元素索引
  • map中回調函數中的第三個參數為:原數組本身

3.使用說明

3.1 支持return返回值;

3.2 return是啥,相當于把數組中的這一項變為啥(并不影響原來的數組,只是相當于把原數組克隆一份,把克隆的這一份數組中的對應項改變了)

3.3 map只能對元素進行加工處理,產生一個新的數組對象。而不能用它來進行篩選(篩選用filter),為什么不能,看個例子就知道了:

4.例子

4.1 在字符串中使用

在一個String上使用map方法獲取字符串中每個字符所對應的ASCII碼組成的數組

var map = Array.prototype.mapvar a = map.call("Hello World", function(e){return e.charCodeAt(0);})// a的值為[72,101,108,108,111,32,87,111,114,108,100]

5.易犯錯的點

5.1 很多時候,map給回調函數傳的是一個值,但是也有可能傳2個、3個值,例如下面的例子

var map = Array.prototype.mapvar a = map.call("Hello World", function(e){return e.charCodeAt(0);})// a的值為[72,101,108,108,111,32,87,111,114,108,100]

為什么會這樣,因為parseInt就是一個函數,它就是作為map的一個回調函數,parseInt接收兩個參數,一個是String,一個是進制

上面的函數就可以化為:

["1","2","3"].map(parseInt(string, radix));

["1","2","3"].map(function(string, radix){return parseInt(string, radix)})// 所以才返回結果為:[1, NaN, NaN]

6.與map相關

6.1 Map對象

es6提供一個對象Map,看看這個Map建的對象到底是啥東西

它是一個對象,size是它的屬性,里面的值封裝在[[Entries]]這個數組里面

myMap.set(1, "a"); // 相當于java的map.put();myMap.set(2, "b");myMap.set(3, "c");myMap.size();myMap.get(1);myMap.get(2);myMap.get(3);

二、Js自帶的forEach()方法

1.方法概述

forEach()方法返回一個由原數組中的每個元素調用一個指定方法后的返回值組成的新數組

2.格式說明

forEach方法中的function回調有三個參數,

  • 第一個參數為:當前正在遍歷的元素
  • 第二個參數為:當前元素索引
  • 第三個參數為:原數組本身
[].forEach(function(value, index, array))

3.使用說明

3.1 這個方法沒有返回值,僅僅是遍歷數組中的每一項,不對原來數組進行修改
但是可以自己通過數組索引來修改原來的數組

3.2 forEach()不能遍歷對象,可以使用for in

4.缺點

4.1 您不能使用break語句中斷循環,也不能使用return語句返回到外層函數

4.2 ES5推出的,實際性能比for還弱

5.例子

5.1 通過數組索引改變原數組

var obj = [1,2,3,4,5,6]var res = obj.forEach(function(item, index, arr) {  arr[index] = item * 10;})console.log(res); // --> undefinedconsole.log(obj); // --> [10,20,30,40,50,60]

5.2 如果數組在迭代的時候被修改,則當前元素與前面的元素會跳過。因為forEach()不會在迭代之前創建數組的副本

var words = ['1', '2', '3', '4'];words.forEach(function(word) {  console.log(word);  if (word === '2') {    words.shift();  }});// 1// 2// 4

6. 與forEach相關

6.1 $.eachfor in

可遍歷數組,可遍歷對象

6.1.1遍歷數組

var arr = [1,2,3,4,5]var res = $.each(arr, function(index, value){  console.log(index, value);})console.log(res); // 返回值,被遍歷的函數

6.1.2遍歷對象

var obj = {name: "psg", age: 22, gender: "male"};// for in 遍歷for(var key in obj) {  console.log(key, obj[key]);}// $.each 遍歷$.each(obj, function(key, value) {  console.log(key, value);})

三、Js自帶的filter()方法

1.方法概述

filter()方法是對原數組進行過濾篩選,產生一個新的數組對象

2.注意事項

2.1 filter()不會對空數組進行檢測(如果對空數組進行篩選,返回值位undefined)

2.2 filter()不會改變原始數組

2.3 返回數組,包含了符合條件的所有元素。如果沒有符合條件的元素則返回空數組

3.格式說明

forEach方法中的function回調有三個參數,

  • 第一個參數為:當前正在遍歷的元素
  • 第二個參數為:當前元素索引
  • 第三個參數為:原數組本身
[].filter(function(value, index, array), thisValue)

4.例子

4.1 在一個Array中,刪除偶數,只保留奇數

var arr = [1, 2, 3, 4, 5, 6, 9, 10, 15];var r = arr.filter(function(x) {  return x % 2 !== 0;});r; // [1,3,5,9,15]

4.2 把一個Array中的空字符串刪掉

var arr = ['A', '', 'B', null, undefined, 'C', ' '];var r = arr.filter(function(e) {  return s && s.trim(); // 注意:IE9一下的版本沒有trim()方法});r; // ['A', 'B', 'C']

4.3 巧妙去除Array的重復元素

var r, arr = ['A', 'B', 'C', 'D', 'B', 'A']r = arr.filter(function(e, i, self) {  return self.indexOf === i;})console.log(r); // --> ['A', 'B', 'C', 'D']

4.4 篩選素數

function get_primes(arr) {  var i;  return arr.filter(function (element) {    var flag = true;    if (element < 2) {      flag = false;    } else {      for (var i = 2; i < element; i++) {        if (element % i == 0) {          flag = false;          break;        }      }    }    return flag;  })}

參考:

http://www.49028c.com/article/157032.htm
http://www.49028c.com/article/157040.htm
http://www.49028c.com/article/157052.htm
http://www.49028c.com/article/157053.htm

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼運行效果。

PS:這里再為大家推薦一款JS數組遍歷方式分析對比工具供大家參考:

在線JS常見遍歷方式性能分析比較工具http://tools.VeVB.COm/aideddesign/js_bianli

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數組操作技巧總結》、《JavaScript遍歷算法與技巧總結》、《javascript面向對象入門教程》、《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript錯誤與調試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91爱爱小视频k| 91精品国产91久久久久久最新| 91精品国产777在线观看| 97超级碰碰碰久久久| 亚洲国产成人在线播放| 日韩国产精品一区| 国产成人黄色av| 色悠悠国产精品| 国产主播喷水一区二区| 色综合五月天导航| 国产精品成人国产乱一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美亚洲一区在线| 精品无码久久久久久国产| 亚洲成年人在线播放| 亚洲激情视频在线| 久久人人97超碰精品888| 国产综合在线看| 青青久久av北条麻妃黑人| 日本19禁啪啪免费观看www| 国内精品视频久久| 久久五月情影视| 亚洲欧洲午夜一线一品| 亚洲夜晚福利在线观看| 亚洲三级黄色在线观看| 91九色蝌蚪国产| 久久青草福利网站| 一本色道久久88综合亚洲精品ⅰ| 日韩欧美亚洲范冰冰与中字| 色综合五月天导航| 午夜精品一区二区三区av| 亚洲欧洲午夜一线一品| 日韩有码在线电影| 都市激情亚洲色图| 日韩美女视频免费在线观看| 国产精品久久久久久久av电影| 日韩欧美精品免费在线| 精品国产鲁一鲁一区二区张丽| 91精品视频在线免费观看| 国产精品国产三级国产专播精品人| 色噜噜狠狠狠综合曰曰曰88av| 久久久这里只有精品视频| 尤物99国产成人精品视频| 国产精品美乳一区二区免费| 日本亚洲精品在线观看| 日韩激情av在线免费观看| 国产精品精品久久久久久| 国产成人鲁鲁免费视频a| 国产成+人+综合+亚洲欧美丁香花| 大荫蒂欧美视频另类xxxx| 91av在线影院| 黑人与娇小精品av专区| 欧美午夜影院在线视频| 日韩视频在线免费观看| 中文字幕亚洲二区| 久久中文字幕在线| 久久亚洲精品视频| 久久久免费高清电视剧观看| 欧美国产日韩一区二区三区| 日韩激情第一页| 国产91ⅴ在线精品免费观看| 国内精品一区二区三区| 一区二区av在线| 亚洲色图50p| 蜜臀久久99精品久久久无需会员| 久久人体大胆视频| 欧美乱人伦中文字幕在线| 国产成人小视频在线观看| 91九色在线视频| 精品国产欧美一区二区五十路| 欧美国产日韩一区| 91精品视频在线播放| 欧美国产日韩一区| 国产精品盗摄久久久| 91在线观看免费观看| 欧美性感美女h网站在线观看免费| 欧美综合第一页| 久久精品最新地址| 欧美成人sm免费视频| 久久久爽爽爽美女图片| 亚洲精品国产欧美| 一区二区三区美女xx视频| 色婷婷亚洲mv天堂mv在影片| 色777狠狠综合秋免鲁丝| 国产成人一区二区三区电影| 亚洲日本aⅴ片在线观看香蕉| 亚洲一级片在线看| 91在线免费观看网站| 91久久夜色精品国产网站| 性欧美办公室18xxxxhd| 亚洲跨种族黑人xxx| 日韩欧美在线看| 九九九热精品免费视频观看网站| 欧美最猛性xxxxx(亚洲精品)| 国产一区欧美二区三区| 午夜精品久久久久久久久久久久| 国语自产偷拍精品视频偷| 亚洲欧美国产高清va在线播| 色哟哟亚洲精品一区二区| 亚洲免费小视频| 欧美一级成年大片在线观看| 日韩欧美国产中文字幕| 麻豆国产va免费精品高清在线| 亚洲第一av在线| 久久久av亚洲男天堂| 国内精品久久久久久久久| 亚洲第一精品久久忘忧草社区| 欧美色另类天堂2015| 亚洲精品视频二区| 91精品久久久久久久久久另类| 综合欧美国产视频二区| 色老头一区二区三区| 日韩av在线高清| 97色在线播放视频| 国内精品免费午夜毛片| 精品久久久精品| 国产在线精品一区免费香蕉| 午夜精品99久久免费| 国产精品男女猛烈高潮激情| 日韩精品久久久久| 日韩欧美在线中文字幕| 动漫精品一区二区| 亚洲剧情一区二区| 96精品久久久久中文字幕| 国产欧美va欧美va香蕉在| 九九精品视频在线| 亚洲一区二区中文字幕| 国产精品九九久久久久久久| 成人免费午夜电影| 夜夜嗨av一区二区三区四区| 日韩av一区二区在线| 日韩中文字幕免费| 亚洲欧美国产另类| 国产一区二区精品丝袜| 九九热最新视频//这里只有精品| 伊人成人开心激情综合网| 九九热99久久久国产盗摄| 伊人伊成久久人综合网站| 美女999久久久精品视频| 精品亚洲男同gayvideo网站| 日韩中文字幕国产| 欧美电影免费观看高清完整| 欧美亚洲午夜视频在线观看| 久久影视电视剧免费网站清宫辞电视| 51精品在线观看| 91精品国产色综合久久不卡98口| 成人福利网站在线观看11| 国产亚洲视频在线观看| 国产精品美女久久久久av超清| 久久久最新网址| 日韩精品视频在线观看网址| 久久国产精品影视| 欧美国产欧美亚洲国产日韩mv天天看完整| 麻豆国产精品va在线观看不卡| 91老司机在线| 亚洲毛片一区二区| 夜夜嗨av色一区二区不卡| 日韩美女在线看| 国产精品jvid在线观看蜜臀| 欧美亚洲国产另类| 欧美性猛交xxxx富婆弯腰| 亚洲综合自拍一区| 欧美一级电影久久| 亚洲人a成www在线影院|