javascript如何計(jì)算數(shù)組中某值的出現(xiàn)次數(shù)
js計(jì)算數(shù)組中某值的出現(xiàn)次數(shù)
需求
返回一個(gè)數(shù)組某值出現(xiàn)的次數(shù)
- 輸入:一個(gè)數(shù)組
- 輸出:需要計(jì)數(shù)的元素
代碼
/* 傳入一個(gè)數(shù)組 返回一個(gè)數(shù)組某值出現(xiàn)的次數(shù) */ const countOccurences = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0); console.log('[1,3,4,6,1,3,5,6,3,1]中 1 出現(xiàn)的次數(shù)是:'+countOccurences([1,3,4,6,1,3,5,6,3,1],1));
效果
一點(diǎn)想法
Array的reduce()方法 第一參數(shù)是total,第二個(gè)參數(shù)是初始值
reduce()的參數(shù)用法很重要,這在之后的復(fù)雜函數(shù)里會(huì)有所體現(xiàn)。
如何計(jì)算數(shù)組中某項(xiàng)的個(gè)數(shù)
<script type="text/javascript"> ? //統(tǒng)計(jì)一個(gè)數(shù)組中有多少個(gè)指定的數(shù)據(jù)項(xiàng) ? ? var arr1= [12, 5, 8, 130, 44,5,51,5]; ? ? //方法一: ? ? function count(arr,num){ ? ? ? var total = 0; ? ? ? for (var i = arr.length - 1; i >= 0; i--) { ? ? ? ? arr[i] === num ? total++ : '' ? ? ? } ? ? ? console.log(total) ? ? } ? ? count(arr1,5) ? ? //方法二: ? ? function count1(arr,num){ ? ? ? var countArr = arr.filter(function isBigEnough(value) { ? ? ? ? ? return value === num; ? ? ? }); ? ? ? console.log(countArr.length); ? ? } ? ? count1(arr1,5) ? ? //方法三: ? ? function count2(arr,num){ ? ? ? var i = 0; ? ? ? arr.forEach(function(ele){ ? ? ? ? ele === num ? i++ : '';? ? ? ? }) ? ? ? console.log(i) ? ? } ? ? count2(arr1,5) ? ? 方法四: ? ? function count3(arr,num){ ? ? ? var i = 0; ? ? ? arr.find(function(ele){ ? ? ? ? ele === num ? i++ : '';? ? ? ? }) ? ? ? console.log(i) ? ? } ? ? count3(arr1,5) </script>
說(shuō)明
1.方法一是通過(guò)for循環(huán),在循環(huán)體中通過(guò)對(duì)當(dāng)前項(xiàng)是否等于指定值的三元運(yùn)算,對(duì)計(jì)數(shù)器進(jìn)行累加得到。
2.方法二通過(guò)數(shù)組的filter方法,返回滿足條件的項(xiàng),組成一個(gè)新數(shù)組,所以我們判斷數(shù)組的長(zhǎng)度就好了。
3.方法三是利用數(shù)組的forEach方法,它會(huì)對(duì)數(shù)組的每一項(xiàng)調(diào)用回調(diào)函數(shù),類似for循環(huán),之后也是對(duì)滿足條件的項(xiàng)進(jìn)行統(tǒng)計(jì)。
4.方法四是利用數(shù)組的find方法,它也會(huì)去數(shù)組中尋找符合條件的項(xiàng),并執(zhí)行回調(diào)函數(shù),所以只需要統(tǒng)計(jì)次數(shù)就好。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JS奇技之利用scroll來(lái)監(jiān)聽(tīng)resize詳解
這篇文章主要給大家介紹了JS奇技之利用scroll來(lái)監(jiān)聽(tīng)resize的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06通過(guò)Kettle自定義jar包供javascript使用
這篇文章主要介紹了通過(guò)Kettle自定義jar包供javascript使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01bootstrap實(shí)現(xiàn)動(dòng)態(tài)進(jìn)度條效果
本篇文章主要介紹了bootstrap實(shí)現(xiàn)動(dòng)態(tài)進(jìn)度條效果,進(jìn)度條可以加強(qiáng)應(yīng)用的用戶體驗(yàn)效果,看到數(shù)字,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-03-03js在ie下打開(kāi)對(duì)話窗口的方法小結(jié)
下面小編就為大家?guī)?lái)一篇js在ie下打開(kāi)對(duì)話窗口的方法小結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10JS執(zhí)行控制之節(jié)流模式實(shí)例分析
這篇文章主要介紹了JS執(zhí)行控制之節(jié)流模式,結(jié)合實(shí)例形式分析了節(jié)流模式的功能、原理及相關(guān)使用方法,需要的朋友可以參考下2018-12-12js中字符串編碼函數(shù)escape()、encodeURI()、encodeURIComponent()區(qū)別詳解
JavaScript中有三個(gè)可以對(duì)字符串編碼的函數(shù),分別是: escape,encodeURI,encodeURIComponent,相應(yīng)3個(gè)解碼函數(shù):unescape,decodeURI,decodeURIComponent 。接下來(lái)通過(guò)本文給大家介紹三者之家的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧2016-04-0411種JavaScript前端數(shù)據(jù)去重方式總結(jié)
這篇文章主要為大家總結(jié)了JavaScript去重的11種方式,各有優(yōu)缺點(diǎn),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以根據(jù)需求合理使用2023-06-06