2011-08-04 63 views
1
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

ES5解决方案,这是所有“重大”的浏览器可供选择:

Object.keys(addObjectResponse[0]).sort().forEach(function(key) { 
    console.log(key, ': ', addObjectResponse[0][key]); 
}); 
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", ... 
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) }); 

那么,你的阵列进行排序。