扫码关注官方订阅号
给一个数组,找出这个数组中那一个元素出现次数最多,且说明最多出现几次,用js写出来,请问该这么写?麻烦知道的给解答下,谢谢
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
hash啊 说个思路,定义一个对象obj,遍历数组, 对象的键为数组的元素,值为出现的次数。然后遍历这个对象,找出值为最大的那个。
function findMost(arr) { if (!arr.length) return if (arr.length === 1) return 1 var res = {} // 遍历数组 for (var i=0,l=arr.length;i<l;i++) { if (!res[arr[i]]) { res[arr[i]] = 1 } else { res[arr[i]]++ } } // 遍历 res var keys = Object.keys(res) var maxNum = 0, maxEle for (var i=0,l = keys.length;i<l;i++) { if (res[keys[i]] > maxNum) { maxNum = res[keys[i]] maxEle = keys[i] } } return maxNum }
看看这个例子,”用js实现读取出字符串中每个字符重复出现的次数?“ 或许对你有帮助
let counter = ['a', 'a', 'b', 'c', 'b']; for (let i = 0, len = arr.length; i < len; i++ ) { counter[arr[i]] ? counter[arr[i]]++ : counter[arr[i]] = 1; } console.log(counter.max());
是时候放大招了,
Array.prototype.getMost = function(){ var obj = this.reduce((p,n) =>(p[n]++ ||(p[n] = 1),(p.max=p.max>=p[n]?p.max:p[n]), (p.key=p.max>p[n]?p.key:n), p), {}); return 'key: '+ obj.key+ ' len: '+obj.max; }
按照楼主的要求,返回那个元素和最多的次数。程序有个 bug,最多出现次数为多个元素的时候,会返回最后一个,并不是第一个。
var getElementUsedMost = function(arr){ var hash = {};//利用hash 来记录次数 var m = 0; //现在的最大次数 var trueEl = null;//最大的元素 for(var i = 0,len = arr.lenth; i < len; i++ ) { var el = arr[i]; hash[el] === undefined ? hash[el] = 1 : (hash[el] ++); hash[el] >= m && (trueEl = el); } return el; };
和一楼的想法是一样的,只是可以利用变量来记住次数,不用两次 遍历。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
hash啊 说个思路,定义一个对象obj,遍历数组, 对象的键为数组的元素,值为出现的次数。然后遍历这个对象,找出值为最大的那个。
看看这个例子,”用js实现读取出字符串中每个字符重复出现的次数?“ 或许对你有帮助
是时候放大招了,
按照楼主的要求,返回那个元素和最多的次数。
程序有个 bug,最多出现次数为多个元素的时候,会返回最后一个,并不是第一个。
和一楼的想法是一样的,只是可以利用变量来记住次数,不用两次 遍历。