我有以下JSON,如果類型是'水果'或'肉',我想根據'等級'進行重新排列。並保持JSON的其餘部分的顯示順序。 「水果」和「肉類」類型將具有排名,但類型「蔬菜」和「日記」排名不是強制性的,在某些情況下可能沒有。根據值重新排列JSON的一部分
原值:
var results = {"docs":[
{"type":"fruit","name":"apple","rank": 10},
{"type":"vegetable","name":"carrot","rank": 0},
{"type":"fruit","name":"grape","rank": 9},
{"type":"meat","name":"beef","rank": 9},
{"type":"meat","name":"fish","rank": 10.1},
{"type":"vegetable","name":"tamato"},
{"type":"meat","name":"chicken","rank": 10},
{"type":"diary","name":"eggs"},
{"type":"vegetable","name":"peas","rank": 0},
{"type":"fruit","name":"orange","rank": 9.1},
{"type":"diary","name":"milk","rank": 10},
{"type":"fruit","name":"banana","rank": 9.8}
]};
期望值:
var results = {"docs":[
{"type":"fruit","name":"apple","rank": 10},
{"type":"fruit","name":"banana","rank": 9.8},
{"type":"fruit","name":"orange","rank": 9.1},
{"type":"fruit","name":"grape","rank": 9},
{"type":"meat","name":"fish","rank": 10.1},
{"type":"meat","name":"chicken","rank": 10},
{"type":"meat","name":"beef","rank": 9},
{"type":"vegetable","name":"carrot","rank": 0},
{"type":"vegetable","name":"tamato"},
{"type":"diary","name":"eggs"},
{"type":"vegetable","name":"peas","rank": 0},
{"type":"diary","name":"milk","rank": 10}
]};
在此先感謝。感謝幫助。
謝謝肖恩。完美的作品。 –
我在IE和Chrome上獲得不同的結果?肉類和水果的排序很好,但有時在Chrome中,它並沒有保持其餘結果的順序。 –
我的猜測是,不同的瀏覽器的JavaScript引擎以不同的方式實現排序算法。我們將蔬菜和乳製品等同對待,因此Chrome有時可能會重新分配蔬菜和乳製品。如果他們是平等的,他們的順序應該不重要。我知道你想保留蔬菜和奶製品的順序。我不知道你會怎麼做。也許你可以將它們從數組中移除,然後在對數組的其餘部分進行排序後將它們添加回去。 – Shawn