2014-10-31 93 views
-1

firstArray排序陣列以JavaScript

[ 
{ 
    type:"one", 
    ID : "1", 
    isValid:"true" 
}, 
{ 
    type:"two", 
    ID : "2", 
    isValid:"false" 
}, 
{ 
    type:"two", 
    ID : "3", 
    isValid:"true" 
} 
] 

我有對象的像在上述一個陣列。我必須採取所有有效的對象。通過迭代它們,我會得到一個只包含有效對象的對象數組。我已經成功完成了這部分。

var valid_types = $.grep(firstArray, function(v) 
    { 
     return v.isValid=== "true"; 
    }); 

["two","five","three","one","four"] 

我有另一個指定排序順序的數組。我如何根據類型對結果數組進行排序?我有點困惑。有什麼建議麼?我必須根據類型排序valid_types

疑問: 結果數組可能具有相同類型的有效對象,並且它可能沒有按排序順序指定的所有類型。如何處理這個?

期望的數組:

[ 
    { 
    type:"two", 
    ID : "3", 
    isValid:"true" 
    }, 
    { 
    type:"one", 
    ID : "1", 
    isValid:"true" 
    } 
] 
+0

請告訴我downvoting – 2014-10-31 13:11:57

+3

我沒有downvote的原因,但我懷疑(誰應該在註釋中已經解釋了爲什麼)是誰做的人是關心你的問題缺乏代碼。 – Pointy 2014-10-31 13:14:03

+0

@積分謝謝。我不知道如何排序。這就是我在這裏發佈的原因。我已經完成了我的一半。你還期待什麼代碼? – 2014-10-31 13:15:13

回答

1

可以使用的.sort()函數來進行排序使用自定義功能,您的陣列。

var order = ["two","five","three","one","four"]; 
var data = [{ 
     type:"one", 
     ID : "1", 
     isValid:"true" 
    }, 
    { 
     type:"two", 
     ID : "2", 
     isValid:"false" 
    }, 
    { 
     type:"two", 
     ID : "3", 
     isValid:"true" 
    } 
]; 

data.sort(function(a, b) { 
    return order.indexOf(a.type) - order.indexOf(b.type); 
}); 
//use your sorted array 
1

我犯了一個解決方案,但它不是真正的好做這樣的。

首先我添加一個屬性給每個類型的int值的對象。之後,您可以通過該屬性對它們進行排序。

var arr = [ 
 
{ 
 
    type:"two", 
 
    ID : "2", 
 
    isValid:"false" 
 
}, 
 
{ 
 
    type:"one", 
 
    ID : "1", 
 
    isValid:"true" 
 
}, 
 
{ 
 
    type:"two", 
 
    ID : "3", 
 
    isValid:"true" 
 
} 
 
]; 
 

 
for(var i = 0; i < arr.length; i++){ 
 
    switch(arr[i].type){ 
 
    case "one": 
 
     arr[i].typeNum = 1; 
 
     break; 
 
    case "two": 
 
     arr[i].typeNum = 2; 
 
     break; 
 
    } 
 
} 
 

 
arr.sort(function(a, b){ 
 
return a.typeNum-b.typeNum 
 
}); 
 

 
console.log(arr);

+0

嗨,請參閱我的編輯 – 2014-10-31 13:24:02

+0

@ user3801433對不起,但我認爲我有你想要的。他們現在按類型排序。 – 2014-10-31 13:27:21

+0

我不應該在數組中添加任何數字。這就是爲什麼我發佈andreas – 2014-10-31 13:28:39