日期:2014-05-16 浏览次数:20704 次
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方法重排序就好了
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/>'); }