var str = "{"张三": 85, "李四": 88, "王五": 79}"; //AJAX从后端获得的字符串,并非直接赋值//这是一个成绩单,我一般情况下采用eval变成json对象,然后采用for in展现
jsonObj = eval( "(" + str + ")" );
for (var name int jsonObj)
{
alert(name + "考了" + jsonObj[name] + "分");
}以上是我的应用场景,代码是我随手写的,只是表达意思而已,突然老板心血来潮,说要搞个排序,让高分的排前面。
也就是要变成:
{"李四": 88, "张三": 85, "王五": 79}搞半天没有想到好办法,自己拆解去冒泡倒是可以,但感觉太山寨,有什么好方法么?
谢谢大家。
jsonObj = eval( "(" + str + ")" );
for (var name int jsonObj)
{
alert(name + "考了" + jsonObj[name] + "分");
}以上是我的应用场景,代码是我随手写的,只是表达意思而已,突然老板心血来潮,说要搞个排序,让高分的排前面。
也就是要变成:
{"李四": 88, "张三": 85, "王五": 79}搞半天没有想到好办法,自己拆解去冒泡倒是可以,但感觉太山寨,有什么好方法么?
谢谢大家。
解决方案 »
- 16制编码如何转换为字符串
- 需要一个图片变换的js代码和它的使用方法,请大家帮帮忙!
- 我用js 在html 页面做了一个下拉菜单,别的浏览器都可以,但是火狐浏览器看不到。如何把下列js代码改为FireFox支持的?
- 怎么用JAVESCRIPT实现一个日期加一年后,再在这个日期上减去一天?(急)
- FF下 document.documentElement.scrollTop只表示body对象的,而其他的比如div,span之类
- 下拉菜单的问题??
- 帮忙----------file的使用。。。。。。。
- [自定回调函数]如何在setTimeout函数外做timeout之后的回调函数?
- 如何使用JavaScript寫動態樹
- csdn果然高手多,问啥都能解,再次问一个。请帮助,谢谢各位牛人
- 求帮助一下JS翻页问题
- 淘宝的宝贝详情中,商品详情的自动检测悬浮框是怎么弄的?
var str = '{"张三": 85,"李四": 88,"王五": 79}';
var jsonObj = eval( "(" + str + ")" );
var newObj={},arr=[];
for (var name in jsonObj){
arr.push(jsonObj[name]+"_"+name);
}
arr.sort(function compare(a,b){return parseInt(b)-parseInt(a)});
for(var i=0;i<arr.length;i++){
var temp=arr[i].split("_");
newObj[temp[1]]=temp[0];
}
alert(newObj);
</script>
jsonObj = eval( "(" + str + ")" );
jsonObj.sort(function(a,b){ return b.score - a.score;});sort方法内部实现是快排,效率不是问题。
汗第二句话是问号,劝lz叫后端的直接在数据库order by吧,或者后端序言sort完了之后再返回给js。
return function(object1, object2) {
var value1,value2;
for(var i in object1) {
value1 = object1[i]
}
for(var i in object2) {
value2 = object2[i]
}
if(value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
};
} var str = "{"张三": 85, "李四": 88, "王五": 79}";
var objstr = evel('(' + str + ')');
var arrstr = [];
$.each(objstr, function(i, dom) {
var obj = {};
obj[i] = dom;
arr.push(obj);
});
arrstr.sort(createComparisonFunction());
for(var i=0,j=arrobj.length; i<j; i++) {
$.extend(objstr, arrobj[i]);
}alert(arrstr);
return function(object1, object2) {
var value1,value2;
for(var i in object1) {
value1 = object1[i]
}
for(var i in object2) {
value2 = object2[i]
}
if(value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
};
}
var str = "{"张三": 85, "李四": 88, "王五": 79}";
var objstr = evel('(' + str + ')');
var arrstr = [];
$.each(objstr, function(i, dom) {
var obj = {};
obj[i] = dom;
arr.push(obj);
});
arrstr.sort(createComparisonFunction());
for(var i=0,j=arrobj.length; i<j; i++) {
$.extend(objstr, arrobj[i]);
}
alert(arrstr);
var jsonObj = eval( "(" + str + ")" );
var arr=[];
for (var name in jsonObj) arr.push({"name":name,"value":jsonObj[name]});
arr.sort(function compare(a,b){return b.value-a.value});
var jsonObj = {};
for(var i=0;i<arr.length;i++) jsonObj[arr[i].name] = arr[i].value;
var jsonObj = {};
for(var i=0;i<arr.length;i++) jsonObj[arr[i].name] = arr[i].value;这个var jsonObj = {};那放进jsonObj的就成了jsonObj的属性,属性貌似没有顺序可言吧,就算用for in遍历,这里的顺序其实有坑的,不单纯是按照放进去的顺序。
因为排序后的对象数组,已经满足了使用的需要了
#2也不错 蛋有问题(parseInt估计都isNaN)而且效率必然没#9高的哦