オブジェクト内の数値周波数を取得し、ソートする方法
2603 ワード
オブジェクト内で最も頻度の高いフィールドを見つけ、{[a:4],[b:3],[c:2]}のようにソートする方法.この形式は,a出現頻度が最も高く4回,b出現頻度が3回で2位であることを示す.
,
// ,
var objData={
"name":"li",
"age":18,
"sex":"girl",
"students":{
"name":"liu",
"age":24,
"sex":"boy",
"family":[
{
"name":"sha",
"daughter":"ll",
"son":[{
"son1":"hh",
"son2":[{
"name":"gg"
},{
"age":0
}]
},{
"ll":28
}]
},{
"mmm":"llll"
},{
"hh":null
}]
}
}
// ;
// , key value, ;
var arr = [];
var eachData = {
forData : function(_arr){
for(var i=0;i<_arr.length;i++){
if(_arr[i] instanceof Array){
eachData.forData(_arr[i]);
}else if(_arr[i] instanceof Object){
eachData.forInData(_arr[i]);
}else{
arr.push(_arr[i]);
}
}
},
forInData : function(_obj){
for(var key in _obj){
arr.push(key);
if(_obj[key] instanceof Array){
eachData.forData(_obj[key]);
}else if(_obj[key] instanceof Object){
eachData.forInData(_obj[key]);
}else{
arr.push(_obj[key]);
}
}
}
}
eachData.forInData(objData);
console.log(arr);
// twoObj
var twoObj = new Object();
for (var i = 0; i < arr.length; i++) {
if(twoObj.hasOwnProperty(arr[i])){
twoObj[arr[i]] = twoObj[arr[i]] + 1;
}else{
twoObj[arr[i]] = 1;
}
}
console.log(twoObj);
// ;
var result = [];
for(var key in twoObj){
var _arr = [];
_arr[0] = key;
_arr[1] = twoObj[key];
result.push(_arr);
}
console.log(result);
var compare = function (str) {
return function (_arr1, _arr2) {
var val1 = _arr1[str];
var val2 = _arr2[str];
if (val1 < val2) {
return 1;
} else if (val1 > val2) {
return -1;
} else {
return 0;
}
}
}
// value
var resultArr = result.sort(compare("1"));
//
console.log(resultArr);