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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

JS 数组的reduce()用法小结

發(fā)布時間:2023/11/21 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 JS 数组的reduce()用法小结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第一次關(guān)注reduce()是在對象數(shù)組去重里。

var arr = [{name:'Thor',id:1},{name:'Locki',id:1},{name:'Tony',id:2}]
var hash= {}
arr = arr.reduce(function(cur,next){
hash[next.id]?'':hash[next.id]===true&&cur.push(next)
return cur
},[])

上面代碼是從數(shù)組arr里去掉重復(fù)id的元素。
arr.reduce(func(),[])傳入了兩個參數(shù):匿名函數(shù)和空數(shù)組[]。
在匿名函數(shù)里的兩個參數(shù):cur指累積變量,next指被遍歷的數(shù)組元素。
如果沒有指定參數(shù)-空數(shù)組[],累積變量cur默認(rèn)是第一個元素的值
在指定參數(shù)空數(shù)組后,累積變量cur的初始值就變成了空數(shù)組。
所以上面代碼就是判斷hash對象里是否已存入了當(dāng)前arr數(shù)組元素的id,如果存入了,則遍歷下一個元素,并把第一次存入時的元素添加到累積變量cur里。這樣最后函數(shù)返回的就是去掉重復(fù)id的數(shù)組。

上面是reduce()的一個應(yīng)用。下面是關(guān)于reduce()的基本介紹: 參考阮大神的介紹,reduce()對數(shù)組進(jìn)行了:遍歷、變形和累積操作。前提是累積變量初始值為數(shù)組。具體看下面例子:

var arr = [0,1,2,3,4]
var handler = function(item,next){
item.push(next+1)
return item
}
arr.reduce(handler(),[])
//輸出結(jié)果是:[1,2,3,4,5]

首先,reduce()對數(shù)組arr進(jìn)行了遍歷
其次,經(jīng)過reduce()處理的數(shù)組被修改。類似map()函數(shù)
最后,通過item這個累積變量,把所有元素累積在一起。這個例子里是通過push方法。

其實(shí)更能體現(xiàn)reduce()累積作用的例子是下面這個:

`
var arr = [0,1,2,3,4]
var summary = arr.reduce(function(sum,n){
sum += n
return sum
},0)
console.log(summary)
//輸出結(jié)果為:10

`

上面代碼里,arr數(shù)組的每個成員被遍歷求和。sum作為累積變量,初始值是0.
如果不提供第二個參數(shù)0,sum初始值也會默認(rèn)為arr的第一個元素即0。

同理,對于數(shù)組的階乘,可以很方便的使用如下代碼做到:

var arr = [1,2,3,4,5]
var times = arr.reduce(function(res,n){
res *= n
return res;
})
console.log(times)
//輸出結(jié)果為120

不知道看完上面介紹,您有沒有掌握reduce()的簡單使用呢?

如果有興趣了解的更多,請參考阮大神的博客:
http://www.ruanyifeng.com/blog/2017/03/reduce_transduce.html

---------------------
作者:keep_and_be_simple
原文:https://blog.csdn.net/qq_39527734/article/details/78828398

總結(jié)

以上是生活随笔為你收集整理的JS 数组的reduce()用法小结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。