建立個空對象,遍歷目標數組,並根據數組元素是否存在與對象中進行對象屬性的添加和次數增長數組
遍歷完數組得出結果對象後,遍歷對象找出最多元素和次數bash
var arr = [3, 5, 6, 5, 9, 8, 10, 5, 7, 7, 10, 7, 7, 7, 7, 10, 10, 10, 10, 10];
複製代碼
function findMost(arr) {
if (!arr.length) return
if (arr.length === 1) return 1
let res = {}
let maxName, maxNum = 0
// 遍歷數組
arr.forEach((item) => {
res[item] ? res[item] += 1 : res[item] = 1
})
// 遍歷 res
for (let r in res) {
if (res[r] > maxNum) {
maxNum = res[r]
maxName = r
}
}
return '出現次數最多的元素爲:' + maxName + ', 出現次數爲:' + maxNum;
}
複製代碼
去除對象遍歷,把比較放到數組遍歷種函數
function findMost (arr) {
if (!arr.length) return;
if (arr.length === 1) return 1;
let res = {};
let maxName, maxNum = 0
// 遍歷數組
arr.forEach((item) => {
res[item] ? res[item] += 1 : res[item] = 1
if (res[item] > maxNum) {
maxName = item
maxNum = res[item]
}
})
return '出現次數最多的元素爲:' + maxName + ', 出現次數爲:' + maxNum;
}
複製代碼
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)ui
reduce方法接受兩個參數,第一個是函數,第二個是初始值spa
函數內接受四個參數:計算後的結果或者初始值,當前值,當前下標,數組自己code
function findMost (arr) {
if (!arr.length) return;
if (arr.length === 1) return 1;
let maxName, maxNum = 0
let res = arr.reduce((res, currentNum) => {
res[currentNum] ? res[currentNum] += 1 : res[currentNum] = 1
if (res[currentNum] > maxNum) {
maxNum = res[currentNum]
maxName = currentNum
}
return res
}, {})
return '出現次數最多的元素爲:' + maxName + ', 出現次數爲:' + maxNum;
}
複製代碼