1. 程式人生 > >js統計陣列中出現次數最多的元素

js統計陣列中出現次數最多的元素

想來想去沒想出更好的解決方法。 思路就是在ana函式裡先遍歷一遍arr,維護一個數組newArr 用於將所有數值相同的放在陣列中的同一個塊內。另外一個數組unique 用於維護數值唯一,判斷當前的item是否已存在於newArr中。為了方便比較物件的數值相同,將所有item均轉為string型別來比較。 得到的

newArr = [[3],[2],[{a:1},{a:1}],[1]]
unique = [3,2,{a:1},1]

再通過re函式遍歷newArr並提取出length最大的項及數值(們)。

let arr = [3, 2, {a: 1}, 1, {a: 1}, 1];

function
ana(arr) {
let newArr = []; let unique = []; for (let i of arr) { //如果已有數值相同的元素存在 i = JSON.stringify(i); if (unique.includes(i)) { newArr[unique.indexOf(i)].push(i) } else { let arr = []; arr.push(i); unique.push(i); newArr.push(arr) } } return
re(newArr) } function re(arr) { let maxCount = 0; let thisChar = []; for (let i of arr) { if (i.length >= maxCount) { maxCount = i.length; } } for (let i of arr) { if (i.length === maxCount) { thisChar.push(JSON.parse(i[0])); } } return
{maxCount, thisChar} } console.log(ana(arr)); //{ maxCount: 2, thisChar: [ { a: 1 }, 1 ] }

歡迎補充。