使用函式處理陣列 高階函式 js

2021-08-21 11:39:41 字數 2203 閱讀 8793

函式式程式設計

和lisp這種純粹的函式式程式設計不一樣,js可以實現其為函式式程式設計

計算乙個陣列的平均值

// 定義乙個用於計算和的函式

var sum = function

(x, y);

// 初始化將要處理的資料

var data = [23, 34, 324, 34, 45, 123, 56, 23];

var mean = data.reduce(sum) / data.length;

檢視一下這個值

mean;

82.75

reduce() 方法為陣列的注入

操作函式的函式,接受乙個或多個函式作為引數,並返回乙個新函式

agrements 所有非箭頭函式的區域性變數,使用agreements物件在函式中引用函式的引數,物件包含傳遞給該函式的每個引數的條目,並返回乙個陣列

function

a();

a(3,24,54,45);

arguments

​0: 3

​1: 24

​2: 54

​3: 45

​callee: functiona()

​length: 4

​symbol(symbol.iterator): function

values()​

: object

debugger eval code:1:14

undefined

this指代呼叫這個函式的物件

下方是關於every方法的使用示例,因為下方要使用every方法(注,這個方法每個函式都具有)

> function

a(number, index);

undefined

> var b = [-3,-2,-5,-3,234,45,324,56,234];

undefined

> b.every(a);

false

> var b = [234,345,546,234,435,234];

undefined

> b.every(a);

true

>

// 這個高階函式將會返回乙個新的函式

// 這個高階函式將會對其返回的函式求反

function

not(f)

}

> var even = function

(x);

undefined

> var odd = not(even);

undefined

> [234,34,234,345,56,234,234,45,234].every(odd);

false

>

大概解釋一下,因為這個函式傳入的是乙個函式,所以先取得這個函式的取反後的函式,然後將取反後的結果賦值乙個新的變數,在對這個取反後返回的函式使用every方法,取得遍歷。得出結果

not為高階函式,接收乙個函式,並將這個函式進行處理,在進行返回,呼叫的時候雙括號直接呼叫,或者即可。

ps;關於es6的寫法

function

(x)

等價於

x => x + 6;
高階函式;

接收f()和g(),並返回f(g())

function

compoes

(f, g) ;

}

來執行一下這個函式

計算f1(f2())

var f1 = function

(x);

undefined

var f2 = function

(x, y);

undefined

var f3 = compoes(f1, f2);

undefined

f3(2,3);

25

ok~

耶,灰常完美,完成了高階函式,對於函式的處理

js 高階陣列函式

1.filter 用來過濾陣列中符合條件的元素 filter 方法建立乙個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。注意 filter 不會對空陣列進行檢測。注意 filter 不會改變原始陣列。函式引數 currentvalue 必需。當前元素 index 可選。當前元素的索...

js函式高階

fn fn.call 普通函式呼叫 則函式中this window obj.sayhello 物件呼叫 函式中this 該物件 new student 構造函式呼叫 this 例項物件 btn.onclick fun 通過事件觸發 this指的是繫結事件物件 setinterval function...

js高階函式

filter用於對陣列進行過濾。它建立乙個新陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。注意 filter 不會對空陣列進行檢測 不會改變原始陣列 其中,函式 function 為必須,陣列中的每個元素都會執行這個函式。且如果返回值為 true,則該元素被保留 函式的第乙個引數 cu...