亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于一個分組統計的函數

關于一個分組統計的函數

翻閱古今 2019-05-11 09:21:46
constcountBy=(arr,fn)=>arr.map(typeoffn==='function'?fn:val=>val[fn]).reduce((acc,val,i)=>{acc[val]=(acc[val]||0)+1;returnacc;},{});countBy([6.1,4.2,6.3],Math.floor);//{4:1,6:2}countBy(['one','two','three'],'length');//{3:2,5:1}我的疑問是map里面是怎么運行,arr.map()主要是這個三元表達式結果是應該是進入fn,而不是后面的reduce求大佬著重解釋下這個
查看完整描述

2 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

constcountBy=(arr,fn)=>{
//判斷fn是否為函數,如果是函數tempFn=fn,如果不是函數tempFn=val=>val[fn]
consttempFn=typeoffn==='function'?fn:val=>val[fn]
//consttempFn=typeoffn==='function'?fn:(val=>val[fn])
consttempArr=arr.map(tempFn)
//遍歷tempArr統計相同的元素個數
returntempArr.reduce((acc,val,i)=>{
acc[val]=(acc[val]||0)+1;
returnacc;
},{});
}
countBy([6.1,4.2,6.3],Math.floor);
//tempFn=Math.floor
//tempArr=arr.map(tempFn)//tempArr=[6,4,6]
//使用reduce統計相同元素個數{6:2,4:1}
countBy(['one','two','three'],'length');
//tempFn=val=>val['length']
//tempArr=arr.map(tempFn)//tempArr=[3,3,5]
//使用reduce統計相同元素個數{3:2,5:1}
                            
查看完整回答
反對 回復 2019-05-11
?
森欄

TA貢獻1810條經驗 獲得超5個贊

array.map接收一個函數作為參數,返回值為一個新數組,新數組里面的每一項是原array經過函數處理后的返回值。map里面,fn是函數的話就是fn(array[i]),不是函數就返回array[i].length
                            
查看完整回答
反對 回復 2019-05-11
  • 2 回答
  • 0 關注
  • 472 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號