按名称排序此对象...

时间:2011-08-04 11:51:39

标签: javascript

var addObjectResponse = [{
    'SPO2': '222.00000',
    'VitalGroupID': 1152,
    'Temperature': 36.6666666666667,
    'DateTimeTaken': '/Date(1301494335000-0400)/',
    'UserID': 1,
    'Height': 182.88,
    'UserName': 'Admin',
    'BloodPressureDiastolic': 80,
    'Weight': 100909.090909091,
    'TemperatureMethod': 'Oral',
    'Resprate': 111,
    'HeartRate': 111,
    'BloodPressurePosition': 'Standing',
    'VitalSite': 'Popliteal',
    'VitalID': 1135,
    'Laterality': 'Right',
    'HeartRateRegularity': 'Regular',
    'HeadCircumference': '',
    'BloodPressureSystolic': 120,
    'CuffSize': 'XL',
}];

如何按名称对此对象进行排序?

3 个答案:

答案 0 :(得分:1)

我假设您的addObjectResponse数组包含多个元素,并且您希望根据UserName属性对这些元素进行排序。

首先,您需要一个比较名称的函数。当两个名称相同时返回“0”,当第二个名称应该在第一个名称之后返回“1”,当第二个名称应该在第一个名称之前时返回“-1”。一个不好的例子是:

function compare(a,b) { 
  if (a < b) return 1; 
  if (a > b) return -1;
  return 0;
}

这个例子很糟糕,因为您可能希望以不区分大小写的方式排序,或者根据姓氏然后使用名字排序,但它会起作用。

获得比较功能后,您可以使用sort()成员函数:

addObjectResponse.sort(function(a,b) { return compare(a.UserName, b.userName) });

然后,您的数组将被排序。

答案 1 :(得分:0)

ES5解决方案,适用于所有“主要”浏览器:

Object.keys( addObjectResponse[0] ).sort().forEach(function( key ) {
    console.log( key, ': ', addObjectResponse[0][key] );
});

答案 2 :(得分:0)

由于JavaScript保证不对对象属性(键)进行排序,因此您需要维护自己的排序数组,然后可以迭代以按排序顺序获取相应的属性:

function getSortedKeys(o) {
  var ns=[], i;
  for (i in o) { ns.push(i); }
  return ns.sort();
}

var sortedKeys = getSortedKeys(addObjectResponse[0]);
sortedKeys; // => ["BloodPressureDiastolic", "BloodPressurePosition", "BloodPressureSystolic", "CuffSize", ...
相关问题