2014-02-03 2 views
1
function demo() { 
      var test = [{ 
       level: 19, 
       title: "hello1" 
      }, { 
       level: 2, 
       title: "hello2" 
      }, 
      { 
       level: 5, 
       title: "hello5" 
      }]; 

Я хочу отсортировать этот массив, но не могу найти способ сделать это.Сортировка json array

ответ

6

Вы можете создать функцию сортировки обычай:

// Sort by level 
test.sort(function(a, b) { 
    return a.level - b.level; 
}); 

Результирующий объект:

[ 
    {"level":2,"title":"hello2"}, 
    {"level":5,"title":"hello5"}, 
    {"level":19,"title":"hello1"} 
] 
2

Вы можете создать функцию сортировки, как:

function sortBy(prop){ 
    return function(a,b){ 
    if(a[prop] > b[prop]){ 
     return 1; 
    }else if(a[prop] < b[prop]){ 
     return -1; 
    } 
    return 0; 
    } 
} 

//Usage 
var test = [{ 
      level: 19, 
      title: "hello1" 
     }, { 
      level: 2, 
      title: "hello2" 
     }, 
     { 
      level: 5, 
      title: "hello5" 
     }].sort(sortBy("level")); 
0

Пожалуйста, проверьте ниже код,

<script type="text/javascript"> 
var test = [ 
    { level: 19, title: "hello1" }, 
    { level: 2, title: "hello2"}, 
    { level: 5, title: "hello5" } 
]; 

    // Before Sorting 
    document.write("<b>Before Sorting </b><br/>");   
    for (var n = 0; n < test.length; n++) { 
     document.write(test[n].level + ' ' + test[n].title+ '<br>'); 
    } 

// ascending order 
function SortByLevel(x,y) { 
    return x.level - y.level; 
} 


function SortByTitle(x,y) { 
    return ((x.title == y.title) ? 0 : ((x.title> y.title) ? 1 : -1)); 
} 

// Call Sort By Name 
test.sort(SortByTitle); 

document.write("<br/><b>After Sorting </b> <br/>"); 
for(var n=0;n<test.length;n++){ 
    document.write(test[n].level + ' ' + test[n].title+ '<br>'); 
} 

</script> 
Смежные вопросы