我正在尝试基于两个字段来订购json数据,并且排序的优先级应该基于字段值,然后是日期。
以下是测试演示
输入json
[{
"title" : "Title 2",
"pin" : false,
"date" : 20130411204207
},{
"title" : "Title 3",
"date" : 20140411204207
},{
"title" : "Title 4",
"date" : 20120411204207
},{
"title" : "Title 1",
"pin" : true,
"date" : 20100411204207
}]
我要做的是用“pin:true”作为第一项来制作对象,然后其余部分应该基于“date”的降序,“pin”是一个可选字段。我正在尝试“orderBy”方法,有没有解决方法?
http://jsfiddle.net/tomalex0/tvLUK/1/
输出json
[
{
"title": "Title 1",
"pin": true,
"date": 20100411204207
},
{
"title": "Title 3",
"date": 20140411204207
},
{
"title": "Title 2",
"pin": false,
"date": 20130411204207
},
{
"title": "Title 4",
"date": 20120411204207
}
]
答案 0 :(得分:2)
您可以通过将引脚转换为数字值来实现此目的:
$filter('orderBy')($scope.sorted, ["0 + !!pin", "date"], true);
更新了你的小提琴
答案 1 :(得分:1)
尝试使用像这样的排序表达式
$scope.sortData = function (){
var newdata = $filter('orderBy')(arrayval, ["pin == undefined ? -1 : (pin ? 1 : 0)","date"],true);
console.log(newdata);
}