2014-10-31 73 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