按字符串值重复排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按字符串值重复排序相关的知识,希望对你有一定的参考价值。
我想知道是否可以通过基于字符串的列表进行排序,例如
我希望所有的Bear
都能在我的ng-repeat中首先基于item.type
。
数据:
$scope.Reindeers = [{
"name": "Vixen",
"type": "Bear"
},
{
"name": "Prancer",
"type": "Dog"
},
{
"name": "Dancer",
"type": "Cat"
},
{
"name": "Rudolph",
"type": "Bear"
}]
AngularJS例如
<div class="weird-reindeers" ng-repeat="Deer in Reindeers | orderBy: 'type == Bear'"></div>
答案
orderBy
的论点可以是一个函数:https://docs.angularjs.org/api/ng/filter/orderBy#orderBy-arguments
编写一个返回用于排序的值的函数。最高优先级应返回最低值:
$scope.orderByBears = function(item) {
switch(item.type) {
case "Bear":
return -10;
/*case "Dog":
return -5;*/
default:
return 0;
}
}
然后使用它作为你的orderBy
函数:
<div class="weird-reindeers" ng-repeat="Deer in Reindeers | orderBy: orderByBears"></div>
https://jsfiddle.net/jnokyfx9/2/
另一答案
最简单的解决方案是使用默认的字母顺序。
所以,因为熊以b开头,所以只需写:
<div class="weird-reindeers" ng-repeat="Deer in Reindeers | orderBy: 'type'">{{Deer}}</div>
见:https://jsfiddle.net/nfje5qo2/6/
另一答案
由于您的数组以key:value方式存储。这很容易排序。您无需编写任何其他方法或功能。只需在html中以Angular术语放置一个名为filter的管道,如下所示。
<div class="weird-reindeers" ng-repeat="Deer in Reindeers | orderBy: 'type'">{{Deer}}</div>
以上是关于按字符串值重复排序的主要内容,如果未能解决你的问题,请参考以下文章