reduce深入理解

2022-02-19 09:02:57 字數 1800 閱讀 8428

// map

console.log([1, 2, 3, 4, 5].reduce((a, v) => ,));

//filter

console.log([1, 2, 3, 3, 4, 5].reduce((a, v) =>

return a

}, ));

//max

console.log([1, 2, 3, 4, 5, 6].reduce((a, v) => , ));

//扁平化

console.log([1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5].reduce((a, v) => , ));

//陣列扁平化

[1, 2], ['a', 'b']   

// [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]

const xprod = (a,b)=>,)

};注意為了防止報錯 return記得一些要寫,第二個就是reduce返回的型別

# 30s   unzipwith

reduce 對於二維陣列的操作

console.log([[1, 10, 100], [2, 20, 200]].reduce(

(acc, val) => (val.foreach((v, i) => acc[i].push(v)), acc)

,[,,]

));其實比較難理解的點有兩點

* (acc,val)=(fn,acc)

我們因為知道 let a=(1,3) //3

* reduce 第二個引數 是返回引數的型別, 如果你要返回的型別是

{},,{}},,[,]都是可以的,

這樣就好理解啦

const unzipwith = (arr, fn) =>

arr.reduce(

(acc, val) => (val.foreach((v, i) => acc[i].push(v)), acc),

array.from().map(x => )

).map(val => fn(...val)); // 這裡不寫就會報錯,所有注意起始值要寫

unzipwith([[1, 10, 100], [2, 20, 200]], (...args) => args.reduce((acc, v) => acc + v, 0)); // [3, 30, 300]

關於array.from不好理解看下面的

[['a', 'b'], [1, 2], [true, false]]

變成[['a', 1, true], ['b', 2, false]]

//////////////////////////////////

const arrays = [['a', 'b'], [1,3, 2], [true, false]];

//先算生成的陣列有幾項

const a=array.from();

console.log(a); //[ undefined, undefined, undefined ]

const b=a.map((_,i)=>,(_,k)=>)

});console.log(b);

錯誤例項(直接報錯)

arr.reduce((acc,item)=>,)

正確例項

arr.reduce((acc,item)=>,)

或者arr.reduce((acc,item)=>,)

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

mysql 索引深入理解 深入理解MySql的索引

為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...