成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

JavaScript array常用方法代碼實例詳解

瀏覽:3日期:2023-10-16 14:58:44

1.map/reduce

map()

map()是array的一個方法

作用: 對array中每一個元素調用自定義函數

’use strict’;function pow(x){return x*x;}var arr=[1,2,3,4,5]var newarray=arr.map(pow)

map的回調函數有三個參數:

callback(currentValue, index, array)通常只要第一個參數

PS: map()傳入的參數是pow,即函數對象本身

通常map調用的自定義方法只包含一個參數

reduce()

reduce()也是array的一個方法

作用: 從數組的前兩個元素開始,作為函數參數,傳入函數得到結果,

結果再和下一個數組元素再一次調用函數,直到數組盡頭

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)PS: 通常reduce()調用的自定義方法只包含兩個個參數

2.filter(篩選)

作用:把Array的某些元素過濾掉,然后返回剩下的元素.

和map()類似,Array的filter()也接收一個函數。和map()不同的是,filter()把傳入的函數依次作用于每個元素,然后根據返回值是true還是false決定保留還是丟棄該元素。

//去掉空字符串

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

回調函數

通常我們僅使用第一個參數,表示Array的某個元素?;卣{函數還可以接收另外兩個參數,表示元素的位置和數組本身:

var arr = [’A’, ’B’, ’C’];var r = arr.filter(function (element, index, self) { console.log(element); // 依次打印’A’, ’B’, ’C’ console.log(index); // 依次打印0, 1, 2 console.log(self); // self就是變量arr return true;});

篩選素數:

function get_primes(arr){if(elem===1){return false;}for(var i=2;i<=elem/2;i++){if(elem%i==0){return false;}}return true;});return x;}

PS: 關鍵在于正確實現一個“篩選”函數

3.sort(排序)

默認排序會把所有元素轉成String在排序,根據一個元素的ASCII值進行排序(非遞減)(TimSort算法)

兩兩比較,當回調函數返回值大于0時,交換元素值

自定義數字排序

’use strict’ var arr=[10,20,1,2];arr.sort(function(x,y){if (x < y) { return -1; } if (x > y) { return 1; } return 0;});console.log(arr); // [1, 2, 10, 20]

數字倒序排列

var arr = [10, 20, 1, 2];arr.sort(function (x, y) { if (x < y) { return 1; } if (x > y) { return -1; } return 0;}); // [20, 10, 2, 1]

4.其他的Array方法

every()和some()

作用: 可以判斷數組的所有元素是否滿足測試條件(通過函數提供)

every()是全部滿足的時候返回true,一個不滿足返回false,并終止檢測

some()是全部不滿足的時候返回false,有一個滿足就返回true

find()

作用: 查找第一個符合條件的元素

查找符合條件的第一個元素,如果找到了就返回這個元素,否則,返回undefined

findindex()

作用: 查找第一個符合條件的元素的索引

查找符合條件的第一個元素,找到這個元素就返回他的索引,如果沒有找到就返回-1

forEach()

作用: 常用于遍歷數組

(和map類似)把數組每個元素依次傳入函數,但不會返回新的數組.

函數作為返回值函數里再定義一個函數,返回值為里面定義的函數

調用函數作為返回值的函數式,每次調用都會返回一個新的函數,即使傳入相同參數

function lazy_sum(arr) { var sum = function () { return arr.reduce(function (x, y) { return x + y; }); } return sum;}//此時返回的是求和函數var f = lazy_sum([1, 2, 3, 4, 5]); // function sum()f(); // 15 此時調用,才進行計算

在函數lazy_sum中又定義了函數sum,并且,內部函數sum可以引用外部函數lazy_sum的參數和局部變量,當lazy_sum返回函數sum時,相關參數和變量都保存在返回的函數中,這種稱為“閉包(Closure)”的程序結構擁有極大的威力.

閉包(懵逼了)(吐彩虹)

有權訪問另一個函數作用域內變量的函數都是閉包。

函數里面的函數會隨著外部定義函數而改變

PS: 因為返回值就是一個函數,調用的時候要加小括號

返回閉包時牢記的一點就是:返回函數不要引用任何循環變量,或者后續會發生變化的變量。

如果一定要引用循環變量怎么辦?方法是再創建一個函數,用該函數的參數綁定循環變量當前的值,無論該循環變量后續如何更改,已綁定到函數參數的值不變:

箭頭函數(=>)(強噠)(參數...)=>{函數體}等價于function(參數...){函數體}

當返回的是一個對象時函數體大括號外邊加小括號

x=>({foo:x})

this

箭頭函數內部的this是詞法作用域,由上下文確定

var obj = { birth: 1990, getAge: function () { var b = this.birth; // 1990 var fn = () => new Date().getFullYear() - this.birth; // this指向obj對象 return fn(); }};obj.getAge(); // 25

箭頭函數完全修復了this指向,this總是指向詞法作用域,也就是外層調用 obj

generator(生成器)

ES6引入借鑒Python同名函數

寫法和函數類似,只是在function后加*,通過yield多次返回值,也可通過return返回值

函數在執行過程中,如果沒有遇到return語句(函數末尾如果沒有return,就是隱含的return undefined;),控制權無法交回被調用的代碼。

function* (x){yield x}function* fib(max) { var t, a = 0, b = 1, n = 0; while (n < max) { yield a; [a, b] = [b, a + b]; n ++; } return;}fib(5); // fib {[[GeneratorStatus]]: 'suspended', [[GeneratorReceiver]]: Window}

直接調用一個generator和調用函數不一樣,fib(5)僅僅是創建了一個generator對象,還沒有去執行它。

調用generator對象有兩個方法,

一是不斷地調用generator對象的next()方法:next()方法會執行generator的代碼,然后,每次遇到yield x;就返回一個對象{value: x, done: true/false},然后“暫?!?。返回的value就是yield的返回值,done表示這個generator是否已經執行結束了。如果done為true,則value就是return的返回值。當執行到done為true時,這個generator對象就已經全部執行完畢,不要再繼續調用next()`了。

var f = fib(5);f.next(); // {value: 0, done: false}f.next(); // {value: 1, done: false}f.next(); // {value: 1, done: false}f.next(); // {value: 2, done: false}f.next(); // {value: 3, done: false}f.next(); // {value: undefined, done: true}

第二個方法是直接用for ... of循環迭代generator對象,這種方式不需要我們自己判斷done:

for (var x of fib(10)) { console.log(x); // 依次輸出0, 1, 1, 2, 3, ...}

generator還有另一個巨大的好處,就是把異步回調代碼變成“同步”代碼。這個好處要等到后面學了AJAX以后才能體會到。

try { r1 = yield ajax(’http://url-1’, data1); r2 = yield ajax(’http://url-2’, data2); r3 = yield ajax(’http://url-3’, data3); success(r3);}catch (err) { handle(err);}

看上去是同步的代碼,實際執行是異步的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
在线欧美一区二区| 在线电影欧美成精品| 色88888久久久久久影院野外| 国产精品国产三级国产有无不卡| 成人免费看视频| 555www色欧美视频| 免费久久99精品国产| 国产精品久久久亚洲一区| 久久久综合精品| 成人少妇影院yyyy| 欧美一区二区三区人| 国产真实精品久久二三区| 欧美色图天堂网| 欧美aa在线视频| 久久久久久9| 亚洲成人福利片| 免费亚洲电影| 亚洲国产视频在线| 亚洲看片网站| 亚洲免费观看在线视频| 亚洲精品在线观看免费| 亚洲欧美一区二区三区极速播放| 韩国一区二区三区在线观看| 久久精品一二三| 欧美成人免费在线| 欧美韩国日本一区| 国产综合欧美在线看| 国产精品毛片高清在线完整版| 欧美二区不卡| 国产精品毛片a∨一区二区三区| 欧美亚韩一区| 综合久久一区二区三区| 亚洲欧洲一区| 亚洲综合色区另类av| 国产嫩草一区二区三区在线观看 | 欧美一级久久久| 国产一二精品视频| 日韩欧美国产午夜精品| 91亚洲精华国产精华精华液| 欧美国产精品专区| 在线欧美视频| 亚洲电影在线播放| 欧美亚洲国产怡红院影院| 国产一区二区三区四区五区入口| 日韩一区二区三区电影在线观看| 本田岬高潮一区二区三区| 国产嫩草影院久久久久| 亚洲国产一区二区在线| 亚洲免费观看高清完整版在线观看熊 | 性做久久久久久免费观看欧美| 美女国产一区| 激情欧美日韩一区二区| 日韩欧美成人激情| 国产精品videosex极品| 亚洲老妇xxxxxx| 老鸭窝亚洲一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 911精品国产一区二区在线| 成人av影视在线观看| 中文字幕乱码久久午夜不卡| 99成人免费视频| 日本欧美大码aⅴ在线播放| 91精品国产综合久久精品app| 99精品视频在线免费观看| 国产精品国产馆在线真实露脸 | 91精品国产综合久久久久久久久久| 成人avav在线| 中文字幕一区二| 久久精品亚洲| 国产精品18久久久久| 日本一区二区动态图| 亚洲一区二区在| 激情综合色丁香一区二区| 亚洲精品一区二区三区精华液| 亚洲黄色av| 美女视频网站久久| xnxx国产精品| 国产精品乱子乱xxxx| 韩国三级在线一区| 国产精品久久毛片av大全日韩| 色av成人天堂桃色av| 本田岬高潮一区二区三区| 亚洲日本在线看| 欧美体内she精视频| 99国产精品国产精品毛片| 亚洲一卡二卡三卡四卡无卡久久 | 欧美日韩综合网| 日韩av一区二区在线影视| 久久久99精品久久| 久久黄色小说| 91亚洲精品久久久蜜桃| 亚洲国产精品久久人人爱| 日韩免费视频线观看| 一本色道婷婷久久欧美| 国产成人免费9x9x人网站视频| 亚洲精品你懂的| 欧美一区二区三区视频在线| 夜久久久久久| 成人三级在线视频| 五月婷婷综合激情| 久久蜜桃av一区二区天堂| 91国偷自产一区二区三区观看| 欧美国产综合视频| 久久成人av少妇免费| 亚洲免费大片在线观看| 欧美一区二区三区视频在线观看 | 在线不卡欧美精品一区二区三区| 在线视频观看日韩| 国产酒店精品激情| 亚洲永久免费av| 2014亚洲片线观看视频免费| 久久一区二区精品| 暖暖成人免费视频| 韩国av一区二区| 亚洲美女屁股眼交3| 2017欧美狠狠色| 欧美日本精品一区二区三区| 亚洲精品乱码| 丁香天五香天堂综合| 亚洲aaa精品| 日本一区二区三区四区| 欧美精三区欧美精三区| 国产精品尤物| 欧美有码视频| 国产一区二三区| 亚洲在线中文字幕| 国产欧美精品国产国产专区 | 国产成人综合在线| 视频一区欧美精品| 国产精品另类一区| 欧美一区二区三区在线看| 麻豆精品91| 国内精品久久久久国产盗摄免费观看完整版| 久久97超碰色| 亚洲福利国产精品| 亚洲美女偷拍久久| 亚洲国产成人在线| 精品国产欧美一区二区| 91精品一区二区三区久久久久久 | 欧美卡1卡2卡| 色婷婷久久久久swag精品| 国产偷自视频区视频一区二区 | 久久都是精品| 日韩亚洲一区在线播放| 欧美在线高清| 成人免费看片app下载| 韩国毛片一区二区三区| 日本大胆欧美人术艺术动态| 亚洲另类春色校园小说| 国产精品久久久久四虎| www国产精品av| 69久久99精品久久久久婷婷| 在线观看中文字幕不卡| 先锋亚洲精品| 亚洲小说区图片区| 欧美bbbxxxxx| 成人动漫一区二区三区| 韩国一区二区三区| 蜜桃久久精品一区二区| 亚洲成人中文在线| 夜夜嗨av一区二区三区中文字幕 | 久久久精品国产免大香伊| 欧美不卡123| 欧美一区二区三区免费视频 | 国产精品1024| 国产一区二区三区香蕉| 久久99九九99精品| 麻豆成人综合网| 日本视频一区二区三区| 婷婷成人综合网| 日韩国产欧美一区二区三区| 亚洲国产综合人成综合网站| 依依成人综合视频| 一级特黄大欧美久久久| 亚洲综合图片区| 亚洲一区二区三区视频在线| 亚洲精品美国一| 亚洲女同女同女同女同女同69| 亚洲欧洲av在线| 国产精品国产三级国产aⅴ入口| 国产精品毛片a∨一区二区三区| 国产精品久久久久一区二区三区 | 日韩精品成人一区二区三区 | 黄色成人91| 影音先锋久久久| 亚洲精品一区二区三区樱花| 国产一区白浆| 亚洲在线日韩| 久久亚洲免费| 91久久一区二区| 欧美色手机在线观看| 这里只有精品免费| 精品久久久久久久久久久久久久久久久 | 精品不卡在线视频| 久久久久久久免费视频了| 国产拍欧美日韩视频二区| 国产精品狼人久久影院观看方式| 亚洲欧美在线视频观看| 亚洲国产成人va在线观看天堂| 免费看日韩a级影片|