js 判断数组中元素重复出现次数(完整版)

  • 需求:编写一个函数,输入数组,输出数组中重复最多的元素,及对应重复次数
  • 这个需求乍看挺简单,但是不花点时间还真搞不定,主要是要理清思路跟方案;这个方案也只是其中一个方案
直接上代码了
  • 直接全部复制到编辑器即可运行测试
  • 支持输出多个最高次数元素
  • 分为两个函数处理了,可以合并,但考虑到可能需求不太一样。
  • 希望能给正在看的靓仔一点启发0.0
        let arr = [1, 1, 1, 2, 2, 2, 3, 4, 3]
            // 需求:编写一个函数,输入数组,输出数组中重复最多的元素,及对应重复次数
            // 返回出现最多的元素及其出现次数
        function parse(arr) {
            let obj = {}
            for (let i = 0; i < arr.length; i++) {
                key = arr[i].toString()
                if (obj[key]) {
                    obj[key] += 1
                } else {
                    obj[key] = 1
                }
            }
            return getMax(obj) // 返回最终结果
        }
        function getMax(obj) {
            var maxKey
            for (key in obj) {
                if (maxKey) {
                    if (obj[key] > obj[maxKey]) {
                        maxKey = key
                    }
                } else {
                    maxKey = key
                }
            }
            let res = []
            console.log("出现最多的元素如下:")
            for (key in obj) {
                if (obj[key] == obj[maxKey]) {  // 精髓:因为最高数量的可能有多个,所以得出最高数量的元素后只需再对比一下还有哪些元素的数量跟最高是相等的。不然在上面的for循环里面解决这个问题逻辑要复杂得多
                    res.push(obj)
                    console.log(`${key}:出现次数最多--次数:${obj[key]}次`)
                }
            }
            return res
        }
        let res = parse(arr)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容