2012-05-10 37 views
2

我有此JSON:顯示從對象的數組中的順序,根據一個特定的值

var projects_array = [ 
{name:"proj1", category:"a", index:1}, 

{name:"proj2", category:"a", index:2}, 

{name:"proj3", category:"b", index:3}, 

{name:"proj4", category:"c", index:4} 
]; 

我展示他們才能像這樣的東西:

for (var i = 0 ; i <proj_num; i++){ 
var numClass="p_"+projects_array[i].index; 
    var act="<li class='"+numClass+"'></li>";   
$('#lookfor').append(act);    
} 

我現在需要的首先在類別屬性中顯示值爲「a」的所有對象,然後以任意順序顯示所有其他對象,我試圖以這種方式使用.sort():\

function compare(obj){ 
if(obj.category == "a"){ return 1;}     
    else{return 0;}      
}      
obj.sort(compare); 

但它不起作用,因爲它種類的所有對象的類別...

你有這個問題的任何可能的解決方案?

PS:我試圖簡化我的代碼,使其可以理解的,我希望它是明確爲你,在此先感謝

回答

0

這將根據重要的詞第一排序。

http://jsbin.com/umezet/12/edit

 var projects_array = [ 
{ 
    name: "proj1", 
    category: "action", 
    index: 1 
}, { 
    name: "proj2", 
    category: "time", 
    index: 2 
}, { 
    name: "proj3", 
    category: "buu", 
    index: 3 
}, { 
    name: "proj3", 
    category: "time", 
    index: 3 
}, { 
    name: "proj4", 
    category: "cooo", 
    index: 4 
}, { 
    name: "proj3", 
    category: "@", 
    index: 3 
}, { 
    name: "proj1", 
    category: "!", 
    index: 1 
}, { 
    name: "proj2", 
    category: "%", 
    index: 2 
}, { 
    name: "proj3", 
    category: "cooo", 
    index: 3 
}, { 
    name: "proj4", 
    category: "*", 
    index: 4 
}]; 
projects_array = projects_array.sort(

function (x, y) 
{ 
    if(x['category'] == 'time') return -1; 
    if(y['category'] == 'time') return 1; 
    if(x['category'] > y['category']) return 1; 
    if(x['category'] < y['category']) return -1; 
    return 0; 
}); 
for(var i = 0; i < projects_array.length; i++) 
{ 
    $('body').append(projects_array[i]['category']); 
} 
+0

謝謝,如果什麼類別值AIS不只是一個字母,但一個字? – lilymz

+0

@lilymz讓我考慮一下 –

+0

的樣子:http://jsbin.com/umezet/4/edit#source,我用了單詞,當我渲染它時顯示「time!%* actiontime @ buucooocooo」,並且我發現了它呈現「timetime!%* action @ buucooocooo」我清楚了嗎? :) – lilymz

相關問題