首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

json回来数据排序

2012-08-14 
json返回数据排序现有返回json数据[{a: 10,b: 1},{a: 10,b: 0},{a: 10,b: 2},{a: 8,b: 2}

json返回数据排序
现有返回json数据

[
  {a: "10",b: "1"},
  {a: "10",b: "0"},
  {a: "10",b: "2"},
  {a: "8",b: "2"},
  {a: "8",b: "0"},
  {a: "4",b: "1"},
  {a: "4",b: "0"},
  {a: "4",b: "3"},
  {a: "4",b: "0"},
  {a: "0",b: "1"},
  {a: "0",b: "2"},
  {a: "0",b: "0"}
]

现在我想他变成这样的排序

[
  {a: "10",b: "0"},
  {a: "10",b: "1"},
  {a: "10",b: "2"},
  {a: "8",b: "0"},
  {a: "8",b: "2"},
  {a: "4",b: "0"},
  {a: "4",b: "0"},
  {a: "4",b: "1"},
  {a: "4",b: "3"},
  {a: "0",b: "0"},
  {a: "0",b: "1"},
  {a: "0",b: "2"}
]

请各位帮帮忙谢谢!

[解决办法]

JScript code
var data  = [  {a: "10",b: "1"},  {a: "10",b: "0"},  {a: "10",b: "2"},  {a: "8",b: "2"},  {a: "8",b: "0"},  {a: "4",b: "1"},  {a: "4",b: "0"},  {a: "4",b: "3"},  {a: "4",b: "0"},  {a: "0",b: "1"},  {a: "0",b: "2"},  {a: "0",b: "0"}];var obj = {}, ar_key = [], result = [];for (var i = 0; i < data.length; i ++) (data[i].a in obj) ? obj[data[i].a].push(data[i].b) : obj[data[i].a] = new Array(data[i].b);for (x in obj) {    obj[x].sort(sortByASC);    ar_key.push(x);}ar_key.sort(sortByDESC);for (var i = 0; i < ar_key.length; i ++) {    for (var j = 0; j < obj[ar_key[i]].length; j ++) result.push({a: ar_key[i], b: obj[ar_key[i]][j]});}console.log(result);function sortByASC(a, b) { return a - b; }function sortByDESC(a, b) { return b - a; }
[解决办法]
调用数组的sort方法重排序就好了

JScript code
    var d = [  { a: "10", b: "1" },  { a: "10", b: "0" },  { a: "10", b: "2" },  { a: "8", b: "2" },  { a: "8", b: "0" },  { a: "4", b: "1" },  { a: "4", b: "0" },  { a: "4", b: "3" },  { a: "4", b: "0" },  { a: "0", b: "1" },  { a: "0", b: "2" },  { a: "0", b: "0" }];  d.sort(function (a, b) {      if (parseInt(a.a,10) > parseInt(b.a)) return -1;      else if (a.a == b.a) return parseInt(a.b,10) > parseInt(b.b,10) ? 1 : -1;      return 1;  });  for (var i = 0, j = d.length; i < j; i++) {      document.write(d[i].a + ':' + d[i].b + '<br/>');  } 

热点排行