例如(见谅我这个化学渣渣):
我从后台数据取出了一组JSON数据:K {val:19} Ca{val:20} Na{val:11} M{val:12}...
但是我要在 JS上 显示:钾、钙、钠、镁...并且要根据val 排序后获得两个数组:
【钠、镁、钾、钙】
【11、12、19、20】
var o= [
{ '钾': 'K', 'val': 19 },
{ '钙': 'Ca', 'val': 20 },
{ '钠': 'Na', 'val': 11 },
{ '镁': 'M', 'val': 12 }
];
alert("排序前\n"+JSON.stringify(o));
function sortJSON(data, key) {
return data.sort(function (a, b) {
var x = a[key];
var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
o2= sortJSON(o, 'val');
alert("排序后\n"+ JSON.stringify(o2));
var element = [ {name:'K',val:19},{name:'Ca',val:20},{name:'Na',val:11} ]; var names=[],vals=[]; for(var i=0;i<element.length-1;i++){ for(var j=i+1;j<element.length;j++){ if(element[i].val>element[j].val){ var key = element[j].val; element[j].val=element[i].val; element[i].val=key; var name = element[j].name; element[j].name=element[i].name; element[i].name=name; } } }; for(var i=0;i<element.length;i++){ vals[i]=element[i].val; names[i]=element[i].name; alert(vals[i]+' '+names[i]); }K={val:19} Ca ={val:20} Na ={val:11} M ={val:12}
var json = {k, Ca, Na, M};
var array;
for(var i;i<json.length;i++){
for(var j=i;j<json.length;j++){
if (json[i].val > json[j].val)
{
val temp = json[i];
json[i] = json[j];
json[j] = temp;
}
}
}
排序后输入就行了,未经测试,不对的地方还请谅解
数据已经放进json了,如果不用解析就在前台直接拿就可以了,比如JSON.results[0].K,就能拿到K的val,在对应赋值中文,然后传进数组排序就好了
<script>
function doJson(){
//创建json对象
var date =[{"key":"K","value":19},{"key":"Ca","value":20},{"key":"Na","value":11},{"key":"M","value":12}];
//创建两个数组,分别存放key和value
var a=new Array();
var b=new Array();
for(var item in date){//遍历json
a[item]=date[item].key;
b[item]=date[item].value;
}
//遍历数组b,根据数组b为a,b两数组排序
for(var i = 1;i<a.length; i++){
//由于数组从0开始,所以每次要先把前两个排序
if(b[0]>b[1]){
var c=0;
c=b[0];
b[0]=b[1];
b[1]=c;
var d=null;
d=a[0];
a[0]=a[1];
a[1]=d;
}
for(var j = 1;j<a.length; j++){
if(b[j]<b[j-1]){
var c=0;
c=b[j];
b[j]=b[j-1];
b[j-1]=c;
var d=null;
d=a[j];
a[j]=a[j-1];
a[j-1]=d;
}}
}
alert("["+a+"]");
alert("["+b+"]");
}
</script>