扫码关注官方订阅号
如字符串arr="abcdaabc",请用js读取出arr字符串中每个字母重复出现的次数分别是多少?
人生最曼妙的风景,竟是内心的淡定与从容!
坐等更好方案:
var arr = 'abcdaabc'; var info = arr .split('') .reduce((p, k) => (p[k]++ || (p[k] = 1), p), {}); console.log(info); //{ a: 3, b: 2, c: 2, d: 1 }
reduce不兼容低版本哦,还有比这个更简洁的吗?
var temp = {}; 'abcdaabc'.replace(/(\w{1})/g,function($1){ temp[$1] ? temp[$1]+=1 : temp[$1] = 1; }) console.log(temp) // {a: 3, b: 2, c: 2, d: 1}
var obj = {} 'abcdaabc efgh'.replace(/(\w)/g,function(word,p){ obj[p[0]] ? obj[p[0]]+=1 : obj[p[0]] =1 }) console.log(obj)
var obj = {}; 'abcdaabc'.split('').sort().join('').replace(/(.)(\1+)?/g, function(m,k){obj[k] = m.length}); console.log(obj); // {a: 3, b: 2, c: 2, d: 1}
不是最优,只是提供另一个思路,兼容所有浏览器。
@leftstick 的方案无可挑剔,但有些花哨了,对理解基本的原理不是最佳选择
那我就把它翻译成 plain js 吧
function charStats(str) { var visitStats = {}; for (var i = 0; i < str.length; i++) { var char = str[i]; if (!visitStats[char]++) visitStats[char] = 1; } return visitStats; } console.log(charStats('abcdaabc')); // {a: 3, b: 2, c: 2, d: 1}
const arr="abcdaabc"; let counter = {}; for (let i = 0, len = arr.length; i < len; i++ ) { counter[arr[i]] ? counter[arr[i]]++ : counter[arr[i]] = 1; } console.log(counter);
不是最简洁的,期待更好的答案。
var arr="abcdaabc" var count = {}; var i,k for(i=0;i<arr.length;i++){ var chr = arr.charAt(i); if( typeof count[chr] === "undefined"){ count[chr] = 1; }else{ count[chr]++; } } console.log(count) for(k in count){ if(count.hasOwnProperty(k)){ console.log("%s:%d",k,count[k]); } }
var str = "addbsnjfsss"; var strArray = str.split(""); var returnObj = {}; for(var i = 0; i < strArray.length; i++) { if(returnObj[strArray[i]]) { returnObj[strArray[i]] = parseInt(returnObj[strArray[i]]) + 1; } else { returnObj[strArray[i]] = 1; } } for(var p in returnObj) { console.log(p + " : " + returnObj[p]); }
大家的方法都大同小异,期待见到更好的想法 =v=
var str = 'abcdacbacxjkl'; var Counter = new Counter(); Counter.count(str); console.log(Counter.getResult()); //{a: 3, b: 2, c: 3, d: 1, x: 1…} function Counter() { var temp = {}; var push = function(item) { temp[item] = temp[item] ? ++temp[item] : 1; } this.count = function(str) { str.split('').forEach( function(item) { push(item); }); } this.getResult = function() { return temp; } }
var str = "aaaabbbccccddfgh"; var o={}; for(var i=0;i<str.length;i++){ var key = str.charAt(i); if(o[key] && o[key].value==key) { o[key].count+=1; } else{ o[key]={}; o[key].value=key; o[key].count=1; } }; for(key in o){ console.log(o[key].value+'='+o[key].count); };
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
坐等更好方案:
reduce不兼容低版本哦,还有比这个更简洁的吗?
不是最优,只是提供另一个思路,兼容所有浏览器。
@leftstick 的方案无可挑剔,但有些花哨了,对理解基本的原理不是最佳选择
那我就把它翻译成 plain js 吧
不是最简洁的,期待更好的答案。
大家的方法都大同小异,期待见到更好的想法 =v=