2011-08-04 6 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

자바 스크립트 당신이 그들의 주문의 자신의 배열을 유지해야합니다 개체 속성 (키)의 어떤 순서를 보장하지 않기 때문에 어떤 당신이 할 수있는 나는 당신의 addObjectResponse 배열이 두 개 이상의 요소가 포함되어 여기에 있으리라 믿고있어

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

을, 당신은 자신의 UserName 특성에 따라 이러한 요소를 정렬 할 : 다음 정렬 된 순서에서 해당 속성을 얻기 위해 반복.

먼저 이름을 비교하는 함수가 필요합니다. 두 개의 이름이 같을 때는 "0"을, 두 번째 이름이 첫 번째 뒤에 오는 경우에는 "1"을, 두 번째 이름이 첫 번째 앞에 오면 "-1"을 반환합니다.

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

이 예는 아마 당신은 대소 문자를 구분 방법으로 정렬 할 때문에 나쁜 또는 다음 성 이름을 기반으로하지만, 작동 : 나쁜 예로들 수 있습니다.

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

이 그런 다음 배열을 정렬됩니다 : 당신이 당신의 비교 함수가 있으면

, 당신은 sort() 멤버 함수를 사용할 수 있습니다.

관련 문제