创建个空对象,遍历目标数组,并根据数组元素是否存在与对象中进行对象属性的添加和次数增加
遍历完数组得出结果对象后,遍历对象找出最多元素和次数
方法二、改良版
去除对象遍历,把比较放到数组遍历种
方法三、利用数组的reduce方法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
reduce方法接受两个参数,第一个是函数,第二个是初始值
函数内接受四个参数:计算后的结果或者初始值,当前值,当前下标,数组本身
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)
}