Javascript AngularJS按属性和自定义过滤器排序

Javascript AngularJS按属性和自定义过滤器排序,javascript,angularjs,sorting,Javascript,Angularjs,Sorting,我已经看到很多答案和文档表明,可以将属性名称数组传递给Angular的orderBy过滤器,以便按多个字段进行排序。但是,我的一个对象属性是一个以文本形式存储的数字(字段可以是“100”、“75”、“50”或“”),这是我的sort函数的问题。我没有意识到,如果数字是第一个,parseInt只会从混合值中提取数字 parseInt("25") === 25; //true parseInt("25+") === 25; //true parseInt("<25") === 25; /

我已经看到很多答案和文档表明,可以将属性名称数组传递给Angular的orderBy过滤器,以便按多个字段进行排序。但是,我的一个对象属性是一个以文本形式存储的数字(字段可以是“100”、“75”、“50”或“”),这是我的sort函数的问题。我没有意识到,如果数字是第一个,parseInt只会从混合值中提取数字

 parseInt("25") === 25; //true
 parseInt("25+") === 25; //true
 parseInt("<25") === 25; //false - actually returns NaN

感谢您的评论!

您检查过了吗?我没有关于进行二次排序的答案,但我确实想指出,自定义比较器函数采用两个参数,因为该函数需要在集合的两个元素之间进行比较。如果两个项相等,则必须返回0;如果第一个值较小,则必须返回1如果第一项大于第二项,则为1。但我认为在该场景中使用函数需要将属性名称作为字符串返回。不,其工作方式与第一个示例中相同。因此,
item in items | orderBy:['itemStatus',sortFunction]
应该没问题。这个@George证明了这一点-你是对的。我的问题是parseInt(“我建议你使用Regex替换,因为如果你将来使用它,它会更加健壮。很高兴你解决了你的问题,感谢你在这里发布答案,而不是把它留给你自己!”!
 ng-repeat="item in items | orderBy:['itemStatus','itemLevelAsNumber']
 ng-repeat="item in items | orderBy:['itemStatus',sortFunction]
 parseInt("25") === 25; //true
 parseInt("25+") === 25; //true
 parseInt("<25") === 25; //false - actually returns NaN
 return parseInt(item.itemLevel.replace('<',''));
 ng-repeat="item in items | orderBy:['itemStatus',sortFunction]