日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

reduce实现filter,map 数组扁平化等

發布時間:2025/6/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 reduce实现filter,map 数组扁平化等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

map函數接收一個函數作為參數,作為參數的函數接收三個參數值,分別是遍歷數組的每一項元素,元素的索引和數組本身。這三個參數剛好和reduce函數接收的第一個函數參數的第2、3、4個參數是對應的。這是實現的核心

實現思路是,將每次遍歷的元素,作為傳入的函數的參數,并將函數執行的結果放入新的數組中。

reduce實現map

Array.prototype._map = function (callback) {if(typeof callback === 'function') {return this.reduce((prev,item,index,arr) => {prev.push(callback(item, index, arr))return prev}, [])} else {console.log(new Error('callback is not function'))} }let val = [1, 5, 6]._map(item => item+ 1) console.log(val); // [2, 6, 7] 復制代碼

實現filter的思路和實現map是一致的,只不過前者是一股腦的把執行結果全放入數組中,而filter需要做一個判斷:如果filter函數傳入的參數(參數是一個函數)執行后有返回值,即經過了檢驗,才將遍歷的當前元素放入數組中,如果沒有返回值,就忽略

reduce實現filter

Array.prototype._filter = function (callback) {if(typeof callback === 'function') {return this.reduce((prev,item,index,arr) => {callback(item, index, arr) ? prev.push(item) : nullreturn prev}, [])} else {console.log(new Error('callback is not function'))}}let val = [1, 5, 6]._filter(item => item > 2)console.log(val); // [5, 6] 復制代碼

求最大值/最小值

let arr = [1, 2, 3, 4, 5]console.log(arr.reduce((prev, cur) => Math.max(prev, cur))); // 5console.log(arr.reduce((prev, cur) => Math.min(prev, cur))); // 1 復制代碼

數組去重

let arr = [1, 2, 3, 1, 1, 2, 3, 3, 4, 3, 4, 5]let result = arr.reduce((prev, item, index, arr) => { !prev.includes(item) && prev.push(item); return prev }, []) console.log(result); //[1, 2, 3, 4, 5]復制代碼

數組扁平化

let arr = [1, 2, '3js', [4, 5, [6], [7, 8, [9, 10, 11], null, 'abc'], {age: 58}, [13, 14]], '[]', null]; function f(arr) {if(Array.isArray(arr)) {return arr.reduce((prev, item) => {return Array.isArray(item) ? prev.concat(f(item)) : prev.concat(item)}, [])} else {throw new Error("arr + ' is not array'")} } 復制代碼

結果:

總結

以上是生活随笔為你收集整理的reduce实现filter,map 数组扁平化等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。