2011-08-04 10 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特性に応じて、これらの要素をソートしたいです。

まず、名前を比較する関数が必要です。 2つの名前が同じ場合は "0"を返し、2つ目の名前が最初の名前の後にある場合は "1"を返し、2つ目の名前が最初の名前の前にある場合は "-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) }); 

を、あなたの配列がソートされます。

関連する問題