1

この非常に長い形式で返される連絡先リストがあります。エントリの順序に基づいて返されます (最初の括弧のセットの外側のフィールド、インデントされています)。私が抱えている問題は、displayName でアルファベット順に並べたいことです。それはメインの配列内の独自の配列にあるため、配列全体を並べ替えるのに問題があります。誰でもこれを理解できますか?ありがとう。ああ、それはJSで行う必要があります。

{
"0":
{"id":1,"rawId":null,"displayName":"Person 1","name":null,"nickname":null,"phoneNumbers":[{"type":"mobile","value":"phonenumb53534r","id":0,"pref":false}],"emails":null,"addresses":null,"ims":null,"organizations":null,"birthday":null,"note":null,"photos":null,"categories":null,"urls":null},
"1":
{"id":2,"rawId":null,"displayName":"Person 2","name":null,"nickname":null,"phoneNumbers":[{"type":"mobile","value":"phonenumber535345","id":0,"pref":false}],"emails":null,"addresses":null,"ims":null,"organizations":null,"birthday":null,"note":null,"photos":null,"categories":null,"urls":null},
"2":
{"id":3,"rawId":null,"displayName":"Person 3","name":null,"nickname":null,"phoneNumbers":[{"type":"mobile","value":"phonenumber47474","id":0,"pref":false}],"emails":null,"addresses":null,"ims":null,"organizations":null,"birthday":null,"note":null,"photos":null,"categories":null,"urls":null}, goes on for a couple hundred rows 
4

2 に答える 2

3

JavaScript のオブジェクトは、本来序数型ではありません。配列がある場合は、それを操作できます。それ以外の場合は、オブジェクトの外側の部分を自分で配列に変換する必要があります。

var arrayOfObj = [];

for (item in obj) {
    if (obj.hasOwnProperty(item)) {
        arrayOfObj.push(obj[item]);
    }
}

JSONを取得する前にそれを行うことができれば、はるかに優れています. それができたら、通常の配列.sortメソッドを使用できます

arrayOfObj.sort(function (a, b) {
    if (a.displayName < b.displayName) {
        return -1;
    }
    else if (a.displayName > b.displayName) {
        return 1;
    }
    return 0;
});

http://jsfiddle.net/ZcM7W/

于 2013-02-24T02:06:48.237 に答える
0

そのresponseTextをJSONに解析する必要があります。ただし、オブジェクトリテラルとして返されるため、配列に変換する必要があります。次に、カスタムコンパレータ関数を使用して並べ替えることができます。

var json = JSON.parse(response), 
data = [];

for (key in json) {
 data.push(json[key]);   
}

data.sort(function (a, b) {
    return a.displayName > b.displayName;
});
于 2013-02-24T02:12:55.710 に答える