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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

JS 数组的reduce()用法小结

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

第一次關注reduce()是在對象數組去重里。

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
},[])

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

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

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

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

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

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

`

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

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

var arr = [1,2,3,4,5]
var times = arr.reduce(function(res,n){
res *= n
return res;
})
console.log(times)
//輸出結果為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

總結

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

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