1、筛选出现频次最高的JS对象
一个一维数组内有多个对象,且对象可重复出现,要求写一个函数,返回出现频次最高的对象列表。
const obj1 = {};
const obj2 = {};
const arr = [obj1, obj2, obj1, obj1];
function find(arr) {
const result = [];
// …
return result;
}
console.log(find(arr));
看见这道题我的解题思路就是找到数组中的众数,所以我想到的就是统计数组中每个元素出现的次数并记录下来。
const obj1 = {
a: 1 }
const obj2 = {
a: 2 }
const obj3 = {
a: 3 }
const arr = [obj1, obj1, obj1, obj3, obj2]
function find(arr) {
let result = []
const countArr = [] // 计数用数组
const keyArr = [] // 去重后的数组,与上面的计数数组下标一一对应
let max = 0 // 用来储存最大值
// 这次循环将每个元素的出现次数统计出来了
arr.forEach(item => {
if (keyArr.includes(item)) {
countArr[keyArr.indexOf(item)]++
} else {
countArr.push(1)
keyArr.push(item)
}
})
// 这次循环则是找到出现次数最多的元素,然后push进结果数组输出
countArr.