Javascript 使用orderBy指令的自定义排序

Javascript 使用orderBy指令的自定义排序,javascript,angularjs,angularjs-orderby,Javascript,Angularjs,Angularjs Orderby,以下是从A到Z的排序标准: 1) 特殊字符 2) 数字 3) 字母表 例如:- $scope.cards = ["815 BRAZOS ST AUSTIN TX 78701","7745 CHEVY CHASE DR AUSTIN TX 78752","701 BRAZOS ST AUSTIN TX 78701","555 ROUND ROCK WEST DR ROUND ROCK TX 78681","400 W 15TH ST AUSTIN TX 78701"] 排序后的预期结果:- 40

以下是从A到Z的排序标准: 1) 特殊字符 2) 数字 3) 字母表

例如:-

$scope.cards = ["815 BRAZOS ST AUSTIN TX 78701","7745 CHEVY CHASE DR AUSTIN TX 78752","701 BRAZOS ST AUSTIN TX 78701","555 ROUND ROCK WEST DR ROUND ROCK TX 78681","400 W 15TH ST AUSTIN TX 78701"]
排序后的预期结果:-

400 W 15TH ST AUSTIN TX 78701
555 ROUND ROCK WEST DR ROUND ROCK TX 78681
701 BRAZOS ST AUSTIN TX 78701
815 BRAZOS ST AUSTIN TX 78701
7745 CHEVY CHASE DR AUSTIN TX 78752
我想使用Angular
orderBy
filter实现这一点。正如在JS自定义排序函数中一样,我们得到了两个参数,通过操作可以返回>0,根据您的函数应该返回一个值,该值将用于使用标准比较运算符(,=)进行排序

因此,在您的情况下,您的函数应该返回一个值,该值将决定排序。对于您的情况,您需要使用一些高级逻辑来产生这样的价值

对于简单示例(按第一个数字排序),您可以得到:

$scope.myValueFunction = function(card) {
        return card.split(' ')[0]|0;
}
至少在您的小样本中可以得到您所要求的,请参见此处:

已更新

如果您想像标准javascript排序自定义函数一样比较两个值,则必须使用自己的过滤器返回排序数组。

根据您的函数应返回一个值,该值将用于使用标准比较运算符(,=)进行排序

因此,在您的情况下,您的函数应该返回一个值,该值将决定排序。对于您的情况,您需要使用一些高级逻辑来产生这样的价值

对于简单示例(按第一个数字排序),您可以得到:

$scope.myValueFunction = function(card) {
        return card.split(' ')[0]|0;
}
至少在您的小样本中可以得到您所要求的,请参见此处:

已更新


如果您想像标准javascript排序自定义函数一样比较两个值,那么您必须使用自己的过滤器,该过滤器返回排序数组。

但是如何比较?在标准javascript排序中,我们得到了两个参数进行比较,但在angular中,我们只得到当前值。请使用标准的
orderBy
过滤器查看更新的fiddle。但你们可以创建自己的过滤器来生成排序数组。谢谢,请以某种方式编辑你们的答案,这样我就可以删除我的减号投票。但我如何比较呢?在标准javascript排序中,我们得到了两个参数进行比较,但在angular中,我们只得到当前值。请使用标准的
orderBy
过滤器查看更新的fiddle。但你们可以创建你们自己的过滤器来生成排序数组。谢谢,请编辑你们的答案,这样我就可以删除我的负数投票。
$scope.myValueFunction = function(card) {
        return card.split(' ')[0]|0;
}