JavaScript初学者编程题(25)
题目:给定一个字符串,请将字符串里的字符按照出现的频率降序进行重新排列并返回
第一种方法,利用对象和数组
JavaScript部分
var str = "weafrgfthhgjaaaawqfweeeeeeeeewefrheheh";
var obj = {};
var arr = [];
for(i = 0; i < str.length; i++){
var key = str[i];
if(obj[key]){
obj[key]++;
}
else{
obj[key]=1;
}
}
for(var key in obj){
var item = {key:key,value:obj[key]}
arr.push(item);
}
arr.sort(function (a, b) {6
return b.value - a.value;
})
str = ""
for(j = 0; j < arr.length; j++){
for(i = 0; i < arr[j].value; i++){
str += arr[j].key;
}
}
console.log(str);
第二种方法,利用二维数组
HTMl部分
<input type="text" id="str">
<button onclick="get()">get</button>
JavaScript部分
function get() {
var theStr = document.getElementById('str').value;
var wordAndNum = [];
for(var p = 0; p < theStr.length; p++){
var tempI=testInArray(theStr[p],wordAndNum);
if(tempI === 0){
wordAndNum[0][1]++;
}else if(tempI != 0){
wordAndNum[tempI][1]++;
}else{
var temp = [theStr[p],1];
wordAndNum.push(temp);
}
}
var sortArrayRes = sortArray(wordAndNum);
console.log(arrayToString(sortArrayRes));
}
function arrayToString(array) {
var str = '';
for(var i = 0; i < array.length; i++){
for(var p = 0; p < array[i][1]; p++){
str += array[i][0];
}
}
return str;
}
function sortArray(array) {
for(var i = 0; i < array.length-1; i++){
for(var x = i + 1; x < array.length; x++){
if(array[i][1] < array[x][1]){
var temp = array[i];
array[i] = array[x];
array[x] = temp;
}
}
}
return array;
}
function testInArray(word,array) {
for(var i = 0; i < array.length; i++){
if(word == array[i][0]){
return i;
}
}
return false;
}