字符串 出现次数最多或最少的字符及出现次数,以对象的形式储存

	     	var string = 'aaabsadbbda'
			function select(str) {
				var obj = {}
				//把所有字符和出现次数存入对象中
				for (let i = 0; i < str.length; i++) {
					if (obj[str[i]]) {
						obj[str[i]]++
					} else {
						obj[str[i]] = 1
					}
				}
				//给对象按value进行排序
				var newkey = Object.keys(obj).sort(function(aa, bb) {
					return obj[bb] - obj[aa]
				})
				var newObj = {}
				//把最大的和最小的放入新对象
				newObj[newkey[0]] = obj[newkey[0]]
				newObj[newkey[newkey.length-1]] = obj[newkey[newkey.length-1]]
				console.log(newObj)
			}
			select(string)

这个有一个问题就是 不能计算出来相同次数的 比如 a和b都出现了5次 只能拿到一个
----------------------------------------------------------------------------------------------------------------------


			var string = 'aaabbblllllllpo'
			function select(str) {
				var obj = {}
					//把所有字符和出现次数存入对象中
				for (let i = 0; i < str.length; i++) {
					if (obj[str[i]]) {
						obj[str[i]]++
					} else {
						obj[str[i]] = 1
					}
				}
					//给对象按value进行排序
				var newkey = Object.keys(obj).sort(function(aa, bb) {
					return obj[bb] - obj[aa]
				})
				var newObj = {}
					//把最大的和最小的放入新对象
				for (var key in obj) {
					if (obj[key] === obj[newkey[0]]) {
						newObj[key] = obj[newkey[0]] //可以获取到所有出现次数最多的
					} else if (obj[key] === obj[newkey[newkey.length - 1]]) {
						newObj[key] = obj[newkey[newkey.length - 1]] //可以获取所有出现次数最少的
					}
				}
				console.log(newObj)
			}
			select(string)

这样就很完美了 可以拿到多个
--------------------------------------------------------------------------------------------------------------------

			var string = 'aaabbblllllllpo'
			function select(str) {
				var obj = {}
				for (let i = 0; i < str.length; i++) {
					obj[str[i]] = ++obj[str[i]] || 1
				}
				var max = Math.max.apply(null, Object.values(obj))
				var min = Math.min.apply(null, Object.values(obj))
				var newObj = {}
				for (var key in obj) {
					if (obj[key] === max) {
						newObj[key] = max
					} else if (obj[key] === min) {
						newObj[key] = min
					}
				}
				console.log(newObj)
			}
			select(string)

最终我们可以简化一下步骤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值