使用jquery对JSON进行排序

Sort JSON with jquery

本文关键字:排序 JSON jquery 使用      更新时间:2024-05-29

如何按first_name对JSON对象进行排序?

{
    1  :{user_id:1, first_name:"first_name1", last_name:"lastname1", email:"user1@test.com"},
    7  :{user_id:7, first_name:"user2", last_name:"test2", email:""}, 
    72 :{user_id:72, first_name:"testing343", last_name:"", email:""},
    246:{user_id:246, first_name:"aaa", last_name:"ssss", email:""}
}

首先,您的JSON字符串无效。首先清除它,您将被迫eval()当前形式的字符串,JSON.parse()将不起作用。


对象键按规范无序排列。您不能静态地对键名进行"排序"并将其冻结在对象中。但你当然可以对凯恩斯主义进行排序,并按照它们的价值观进行操作。

例如:

var json = '{1:{user_id:1, first_name:"first_name1", last_name:"lastname1", email:"user1@test.com"}, 7:{user_id:7, first_name:"user2", last_name:"test2", email:""}, 72:{user_id:72, first_name:"testing343", last_name:"", email:""}, 246:{user_id:246, first_name:"aaa", last_name:"ssss", email:""}}';
json = eval( json );
Object.keys( json ).sort(function( a,b ) {
    return json[a].first_name.localeCompare( json[b].first_name );
}).forEach(function( key ) {
    console.log( json[key].first_name );
});

该代码假定启用ES5的JS引擎或任何类型的ES5填充程序库可用。

按照如下方式编写JSON对象:

data = [{user_id:1, first_name:"first_name1", last_name:"lastname1", email:"user1@test.com"}, {user_id:7, first_name:"user2", last_name:"test2", email:""}, {user_id:72, first_name:"testing343", last_name:"", email:""}, {user_id:246, first_name:"aaa", last_name:"ssss", email:""}]

所以它现在是一个数组。然后你可以在上面调用.sort()

data.sort(function(a, b) {
    var x = a.first_name.toLowerCase(), y = b.first_name.toLowerCase();
    return x < y ? -1 : x > y ? 1 : 0;
});

为什么要对对象进行排序?

您需要将此对象循环到一个数组中,然后对数组进行排序。http://jsfiddle.net/z2xsC/例如:

//loop into array
var arr = [];
for( var key in data ){
  if( data.hasOwnProperty( key ) ){
    arr.push( data[key] );
  }
}
//now, sort your array
arr.sort( function(a,b) { 
  var nameA=a.first_name.toLowerCase(),
      nameB=b.first_name.toLowerCase();
  if (nameA < nameB){ 
    return -1; 
  } else if (nameA > nameB){ 
    return 1
  } else { 
    return 0
  }
});