js查找数组中出现次数最多的元素

JavaScript010

js查找数组中出现次数最多的元素,第1张

方法一 、利用对象

创建个空对象,遍历目标数组,并根据数组元素是否存在与对象中进行对象属性的添加和次数增加

遍历完数组得出结果对象后,遍历对象找出最多元素和次数

方法二、改良版

去除对象遍历,把比较放到数组遍历种

方法三、利用数组的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)

}