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',
}];
如何按名称对此对象进行排序?
答案 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", ...