编写一个js函数求一个字符串数组按字符串中各字母出现次数多少的重新排序

题目可能有点没表述清楚,即假设有一个一维数组{"abcdeafab","abcdabcd","adadad"},则各个字符串中各字母出现的重复次数分别是(按降序排列),2,2,2,2;3,2,1,1,1,1;3,3。则该数组重新排列后输出为{"adadad","abcdeafab","abcdabcd"};
求满足要求的js函数

1个回答

[code="java"]<br> var array = [&quot;abcdeafab&quot;,&quot;abcdabcd&quot;,&quot;adadad&quot;];</p> <pre><code>var statArray = new Array(); for(var index in array) { var stat = {}; var value = array[index]; for(var i=0;i&lt;value.length;i++) { var str = value.slice(i,i+1); if(!stat[str]) { stat[str] = 1; } else { stat[str]++; } } statArray.push(stat); } var resultArray = new Array(); for(var index in statArray) { var tmp = new Array(); var stat = statArray[index]; for(var key in stat) { tmp.push(stat[key]); } tmp.sort().reverse(); resultArray.push(tmp); } resultArray.sort().reverse(); console.info(resultArray); </code></pre> <p>
[/code]
不考虑性能

weixin_42500485
A多彩儿童摄影 ok 就用这个啦 太感谢了
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian <script type="text/javascript"> var array = ["abcdeafab","abcdabcd","adadad"]; var statArray = new Array(); for(var index in array) { var stat = {}; var value = array[index]; for(var i=0;i<value.length;i++) { var str = value.slice(i,i+1); if(!stat[str]) { stat[str] = 1; } else { stat[str]++; } } statArray.push(stat); } var resultArray = new Array(); for(var index in statArray) { var tmp = new Array(); var stat = statArray[index]; for(var key in stat) { tmp.push(stat[key]); } tmp.sort().reverse(); resultArray.push([tmp,array[index]]); } resultArray.sort().reverse(); for(var i in resultArray) { console.info(resultArray[i][1]); } function sort(a,b) { return a.localeCompare(b); } </script>
大约 8 年之前 回复
weixin_42500485
A多彩儿童摄影 喔 谢啦
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 晚上有时间给你改改
大约 8 年之前 回复
weixin_42500485
A多彩儿童摄影 需要的结果是{"adadad","abcdeafab","abcdabcd"},而不是{3,3,3,2,1,1,1,1,2,2,2,2},该怎么写呀。谢啦
大约 8 年之前 回复
立即提问
相关内容推荐