letterSum

问题描述:输入一个数组arr = ['1a', '2b', '3c', '5a'],输出其中出现次数最多的字母前面的数字之和,如arr,输出应为:出现次数最多的字母为a,数字和为6. 用js实现。

思路:两个函数:排序函数jsSort(obj), 处理函数letterSum(arr).

//冒泡排序实现对象按值排序,返回排序好的对象
function jsSort(obj) {
	var keyArr = [];
	var valArr = [];
	var res = {};
	for(var key in obj) {
		keyArr.push(key);
		valArr.push(obj[key]);
	}
	for(var i = 0; i < valArr.length; i++) {
		for(var j = 0; j < valArr.length - 1; j++) {
			var keyTmp, valTmp;
			if(valArr[j] < valArr[j + 1]) {
				keyTmp = keyArr[j];
				keyArr[j] = keyArr[j + 1];
				keyArr[j + 1] = keyTmp;
				valTmp = valArr[j];
				valArr[j] = valArr[j + 1];
				valArr[j + 1] = valTmp;
			}
		}
	}
	for(var i = 0; i < valArr.length; i++) {
		res['"' + keyArr[i] + '"'] = valArr[i];
	}
	return res;
}
function letterSum(arr) {
			var res = {};
			var maxLetter;
			for(var i = 0; i < arr.length; i++) {
				var c = [];
				c = arr[i].split("");
				if(!(res.hasOwnProperty(c[1]))) {
					res[c[1]] = parseInt(c[0]);
				}
				else {
					res[c[1]] += parseInt(c[0]);
				}
				
			} //对象构建完毕,之后按值排序输出值最大的键值
			res = jsSort(res);
			maxLetter = Object.keys(res)[0];
			console.log("出现最多的字母为" + maxLetter + "," + "数字和为" + res[maxLetter]);
		}
var arr = ["1a", "2b", "3c", "5a"];
letterSum(arr);

输出:输出值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值